在我的开发笔记本电脑上,我只安装了 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 文件?