我需要为.Net 3.5和.Net 4.0编译一个项目。这种做法最低摩擦的方法是什么?如果我从另一个程序集引用此项目,我如何确定目标是哪个运行时?或者我应该直接引用二进制文件?
答案 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
但我仍然没有看到任何我需要的情况。