Отражение? Внедрение зависимости? Ты усложняешь себе жизнь!
Компиляция с Microsoft.SharePoint.dll v12, и она будет работать в 2007 году.
Развертывание в 2010 году, и оно будет «просто работать» (почти во всех случаях), так как В SharePoint 2010 уже есть настройка перенаправления привязки, поэтому любая ссылка на v12 будет перенаправлена на v14.
Вам не нужно ничего настраивать.
Единственные ситуации, когда вам нужно усложнить ситуацию, это
Случаи, когда что-то будет работать
в 2007 году, но не в 2010 году (я не могу
придумать что-нибудь подать).
Где вы можете использовать специальные функции 2010 года.
Если это так, то я лично сделаю двойную компиляцию. Измените файл .csproj, чтобы получить 2 слегка отличающиеся версии, используйте параметрическую и условную компиляцию (точно так же, как и с #if DEBUG) для версий кода для конкретного продукта, где это необходимо (их будет очень мало). Вы также можете использовать эти условия в ссылках в .csproj, например
<Reference Include="Microsoft.SharePoint">
<HintPath Condition="'$(SP2010)'!='true'">PathToV12\Microsoft.SharePoint.dll</HintPath>
<HintPath Condition="'$(SP2010)'=='true'">PathToV14\Microsoft.SharePoint.dll</HintPath>
</Reference>
Недостатки
- Вы получите 2 версии вашего
Программа
Преимущества
- Вы получите 2 версии вашей программы! Многие изменения, которые вы, возможно, захотите внести в версию 2010, будут в файлах manifet.xml, feature.xml и других конфигурационных файлах - отражение, внедрение зависимости и т. Д., Здесь вы ничего не сделаете.
- По-прежнему имеется единственная версия исходного кода (с незначительной условной компиляцией)
- Компилятор обнаружит больше ошибок (например, он не может выяснить во время компиляции, что та забавная вещь, которую вы делаете с Reflection, чтобы вызвать новый метод в v14, действительно будет работать)