我可以使用msbuild 4.0定位dotnet 3.5吗?

Rob*_*Rob 3 msbuild .net-framework-version

在我的解决方案中,我有对(例如)System.ServiceModel.dll的项目引用,其中“使用特定版本”设置为false。msbuild 3.5一切正常。

我想使用msbuild 4.0才能使用属性函数。我尝试传递属性“ 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或其依赖项之一。该系统找不到指定的文件。确认声明正确,并且程序集及其所有依赖项均可用。

Jas*_*son 5

传递给msbuild的参数是:

/p:TargetFrameworkVersion="v3.5"
Run Code Online (Sandbox Code Playgroud)

MSBuild 3.5及更高版本(3.5、4.0、2012、2013等)中提供了此功能。它更改了该生成的msbuild脚本内的属性。

需要特别注意的是,您甚至可以为每个MSBuild版本指定计算机上安装的所有目标版本。通常,您无法在Visual Studio中执行此操作(例如,在2010年使用4.5.1),但是MSBuild 4.0(vs2010)会将其用作属性值并使用它。