Вот как я выплюнул версии .NET 1.1, скомпилированные с использованием WSSv2 API, и .NET 2.0, скомпилированные с использованием сборки WSSv3. Это будет работать для VS 2005 и 2008.
Вам нужно будет использовать MSBEE http://www.codeplex.com/Wiki/View.aspx?ProjectName=MSBee
Работа с .NET 1.1 с Visual Studio 2008
Несколько советов
Откройте * .csproj и выясните, где указана DLL-библиотека SharePoint, и измените ее на что-то подобное, что меняет ссылочную сборку в зависимости от вашей цели (FX1_1 означает, что вы нацеливаетесь на .NET1.1 и, следовательно, WSSv2)
<Reference Include="Microsoft.SharePoint">
<HintPath Condition="'$(TargetFX1_1)'!='true'">pathto\WSS3\Microsoft.SharePoint.dll</HintPath>
<HintPath Condition="'$(TargetFX1_1)'=='true'">pathto\WSS2\Microsoft.SharePoint.dll</HintPath>
</Reference>
Используйте условную компиляцию для различий, где это необходимо
#if FX1_1
// WSSv2 specific code
#else
// WSSv3 specific code
#endif
Если вы получили ошибку компилятора, но код выглядит правильно, возможно, ошибка относится только к .NET1.1 / WSSv2 и прекрасно компилируется в .NET2 / WSSv3. Проверьте вкладку вывода, чтобы увидеть, для какой цели произошла ошибка
Вам также потребуется освоить некоторые движения ниндзя MSBUILD, чтобы сохранить процесс сборки в 1 шаг и сохранить себя в здравом уме. http://brennan.offwhite.net/blog/2006/11/30/7-steps-to-msbuild/ Используя MSBUILD, вы можете заставить VS компилировать обе версии одновременно, не прибегая к командной строке. .
Это запустит компиляцию .NET1.1 после завершения .NET и выведет некоторые сообщения в окно вывода, чтобы помочь вам определить, где произошли ошибки.
<Target Name="BeforeBuild">
<Message Text="--- Building for .NET 1.1 ---" Importance="high" Condition="'$(TargetFX1_1)'=='true'" />
<Message Text="--- Building for .NET 2.0 ---" Importance="high" Condition="'$(TargetFX1_1)'!='true'" />
</Target>
<Target Name="AfterBuild" Condition="'$(TargetFX1_1)'!='true'">
<MSBuild Projects="$(MSBuildProjectFile)" Properties="TargetFX1_1=true;" />
</Target>