gpt4 book ai didi

msbuild - 如何控制在 .NET4 和 4.5RC 之间使用哪个版本的 msbuild 文件?

转载 作者:行者123 更新时间:2023-12-02 10:44:32 30 4
gpt4 key购买 nike

在我的开发笔记本电脑上,我只安装了 VS2012 RC,并且我能够成功地从 powershell(通过 psake)连接到新的 MSDeploy .pubxml 管道(DeployOnBuild 和 PublishProfile 设置),以将我的网站部署到我们的测试服务器。

但是,在我的构建服务器上,我最初安装了 VS2010 SP1,现在另外安装了 2012 RC(我在这台计算机上还有其他仍然是 .NET 4 的构建)。

当使用完全相同的参数运行相同的脚本时,我在开发计算机和构建服务器之间看到不同的结果。我正在运行的命令是

exec { msbuild "Website\WebSite.csproj" /m p:DeployOnBuild=True /p:PublishProfile=MyTestProfile }

在构建服务器上,这实际上不会触发 MSDeploy,而只是将站点压缩并生成部署包的打包位。我的机器成功地获取了 pubxml 文件并成功进行了部署。

最终,我相信我已将问题追溯到文件 Microsoft.Web.Publishing.targets。在我的开发机器上我只有

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web

但是服务器另外还有

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web

看起来这个文件(不知道 .pubxml 的东西)就是在那里使用的。

有谁知道我需要调整什么(最好是在我自己的 msbuild 文件中,这样我就不会搞砸 4.0 版本的构建服务器上的任何其他内容)以使 msbuild 获取 v11.0 版本文件并从而使用我的 .pubxml 文件?

最佳答案

这很有趣,它应该选择最新的(v11.0),似乎这里有一个错误。这是由 MSBuild 属性 VisualStudioVersion 控制的。

以下是在构建时如何填充该值的规则。 1. 如果 VisualStudioVersion 被定义为环境变量或全局属性(例如/p: 在命令行上),则获胜。这就是 Dev11 和 Dev11 命令提示符始终是 v11 的方式 – 它们都将 VSV 定义为环境变量 1. 否则,如果存在与等效解决方案版本匹配的子工具集(当前始终为文件格式版本 – 1),请选择该子工具集 1. 否则,获取默认版本; 10.0 如果安装了 Dev10,则安装最高版本的子工具集版本(当前始终为 11),否则

在您的情况下,由于遇到问题,您可以传入属性 /p:VisualStudioVersion=11.0 以确保使用正确的目标。

关于msbuild - 如何控制在 .NET4 和 4.5RC 之间使用哪个版本的 msbuild 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936828/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com