小编tas*_*ydb的帖子

在MSBuild文件中获取VS 2017的正确$(VisualStudioVersion)

我有一个MSBuild文件可将解决方案(在VS 2013中创建并移植到VS 2017)发布到远程服务器。令人讨厌的一句话是:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup> 
Run Code Online (Sandbox Code Playgroud)

当我运行命令时:

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild" WebSite1_Web_configs.build /p:Configuration=Integracion;Platform="AnyCPU" /p:VisualStudioVersion=15.0
Run Code Online (Sandbox Code Playgroud)

经过一些编译后,最终会出现以下错误:

Error MSB4062 The "TransformXml" task could not be loaded from the assembly C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll
Run Code Online (Sandbox Code Playgroud)

当然不能加载,因为版本应该是15.0,而不是12.0。

我尝试过的事情:

  • 将其添加/p:VisualStudioVersion=15.0到我调用MSBuild的命令中。没用

  • * .csproj文件中更改元素:

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild" WebSite1_Web_configs.build /p:Configuration=Integracion;Platform="AnyCPU" /p:VisualStudioVersion=15.0
Run Code Online (Sandbox Code Playgroud)

对于:

Error MSB4062 The "TransformXml" task could not be loaded from the assembly C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll
Run Code Online (Sandbox Code Playgroud)

没用

那么,如何$(VisualStudioVersion)在MSBuild文件中获取正确的VS版本而不必对其进行硬编码?

msbuild visual-studio visual-studio-2017 visual-studio-2017-build-tools

5
推荐指数
1
解决办法
2092
查看次数