在我的解决方案中,我有项目引用(例如)System.ServiceModel.dll,其中“use specific version”设置为false。 使用msbuild 3.5,一切都很好。
我想使用msbuild 4.0来使用property functions。我尝试传入属性“TargetFrameworkVersion = 3.5; ToolsVersion = 3.5”。但是,我收到以下错误:
无法加载文件或程序集'C:\ WINDOWS \ Microsoft.Net \ assembly \ GAC_MSIL \ System.configuration \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.configuration.dll'或其中一个依赖项。
如果我使用msbuild 3.5,则不会发生这种情况。
我可以在不指定项目文件中的版本的情况下完成这项工作吗? (将来我们可能希望将应用程序升级到dotnet 4)
编辑:我尝试在“外部”调用中使用msbuild 3.5,并为需要新功能的目标调用msbuild(使用<msbuild>
任务)4.0。也没有运气 - 内部调用给出以下错误消息:
错误MSB4062:无法加载文件或程序集“Microsoft.Build.Tasks.v4.0,Version = 4.0.0.0或其依赖项之一。该系统找不到指定的文件。确认声明是正确的,并且程序集及其所有依赖项都可用。
答案 0 :(得分:4)
传递给msbuild的参数是:
/p:TargetFrameworkVersion="v3.5"
这在MSBuild 3.5及更高版本(3.5,4.0,2012,2013等)中可用。它会更改该构建的msbuild脚本中的属性。
额外注意的是,您甚至可以为每个MSBuild版本指定计算机上安装的所有目标版本。通常,您无法在Visual Studio中执行此操作(例如,在2010年使用4.5.1),但MSBuild 4.0(vs2010)会将其作为属性值并使用它。
答案 1 :(得分:2)
尝试:
/p:TargetFramework=v3.5
目标框架版本可以是v2.0,v3.0或v3.5。如果您是不在给定目标框架版本中的引用程序集,那么您将在构建时获得错误/警告。
参考文献: