tas*_*ydb 5 msbuild visual-studio visual-studio-2017 visual-studio-2017-build-tools
我有一个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版本而不必对其进行硬编码?
tas*_*ydb 14
好的,问题是我<Import>在 *.build 文件的末尾有元素。其中一个导入对路径的一部分进行了硬编码:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" />
Run Code Online (Sandbox Code Playgroud)
我把它改成:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets" />
Run Code Online (Sandbox Code Playgroud)
我用/p:VisualStudioVersion=15.0参数执行了 MSBuild并且它起作用了。
请,如果您有同样的问题,请检查您是否有硬编码路径的导入。
| 归档时间: |
|
| 查看次数: |
2092 次 |
| 最近记录: |