如何同时为.Net 3.5和4编译项目

时间:2011-08-16 07:38:22

标签: c# .net visual-studio msbuild

我需要为.Net 3.5和.Net 4.0编译一个项目。这种做法最低摩擦的方法是什么?如果我从另一个程序集引用此项目,我如何确定目标是哪个运行时?或者我应该直接引用二进制文件?

3 个答案:

答案 0 :(得分:9)

我只是通过拥有两个csproj文件来实现这一点。然后我可以轻松设置版本,引用,构建符号等。为了避免在两者中维护文件列表,我使用了一个包括 - 即

我(在次要.csproj中):

<Compile Include="..\TheMainProject\**\*.cs" />

这表示“编译 .. \ TheMainProject下的所有.cs文件”。

答案 1 :(得分:2)

您可以利用多重定位功能。

基本上你会得到类似的东西:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<MSBuild Projects="@(ProjectsToBuild)" 
         Properties="TargetFrameworkVersion=$(CustomTargetFrameworkVersion)" />

有关详情,请参阅:

答案 2 :(得分:1)

为什么你需要那个?

使用post / pre build任务,您可以运行msbuild来定位不同的框架,请参阅参数“toolversion”

http://msdn.microsoft.com/en-us/library/ms164311.aspx

MSBuild.exe MyProject.proj /ToolsVersion:4.0

并查看

http://msdn.microsoft.com/en-us/library/ee395432.aspx

但我仍然没有看到任何我需要的情况。