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 服务才能使其正常工作?所有建议表示赞赏。

4

1 回答 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

于 2013-01-06T03:05:01.740 回答