从TeamCity发布vs2012解决方案

19

我正在使用Visual Studio 2012和发布功能。我已经创建了一个发布配置文件,可以将我的应用程序部署到开发服务器上,并且在我的机器上从vs2012执行时效果很好。这是我的问题; 在开发服务器上,我还安装了TeamCity,并且我希望在构建完成后触发发布。因此,我创建了一个简单的构建步骤,看起来像这样:

Build file path: .\src\Solution.sln
Targets: Rebuild
Command line parameters: /p:DeployOnBuild=true;PublishProfile=Ci

当执行此步骤时,我会收到以下错误:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4377, 5): error ERROR_USER_NOT_ADMIN: Web deployment task failed. 
(Connected to 'dev.domain.com' using the Web Deployment Agent Service, but could not authorize. Make sure you are an administrator on 'dev.domain.com'. 

Ci配置文件包含一个用户名和密码,在我本机上使用Visual Studio进行发布时有效。我还尝试在构建步骤中传递用户名和密码作为参数,但结果相同。我需要以管理员帐户运行TeamCity服务才能使其工作吗?感谢所有建议。

1个回答

12

我刚刚在http://sedodream.com/2013/01/06/CommandLineWebProjectPublishing.aspx博客中谈到了这件事。

你说得很对,希望我能够弥补差距。

你正确地指出,在VS发布对话框中指定了用户名和密码,但我们并没有将密码保存在.pubxml文件中。它当前保存在.pubxml.user文件中,并且该文件在命令行方案中根本不被使用。因此,您需要传递该属性。所以在你的情况下应该是:

msbuild .\src\solution.sln /p:DeployOnBuild=true /p:PublishProfile=ci /p:Password=<insert-password>

如果您的 Web 服务器没有受信任的证书,您可能还需要传递 /p:AllowUntrustedCertificate=true

还有一个小细节可能与您的问题无关,但对于以后可能会看到此问题的其他人可能会有所帮助。如果您正在构建 .csproj/.vbproj 文件(以及在某些情况下使用 .sln 文件的情况下可能也是如此),您应该传递属性 /p:VisualStudioVersion=11.0。更多信息可以在我的博客中找到:http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接