我正在使用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服务才能使其正常运行?所有建议都表示赞赏。
答案 0 :(得分: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>
如果您的网络服务器没有受信任的证书,您可能还需要传递/p:AllowUntrustedCertificate=true
。
可能与您的问题没有直接关系的一点添加,但可能对稍后可能会看到的其他人有所帮助。
如果要构建.csproj / .vbproj文件(,并且可能在某些使用.sln文件的情况下),则应传入属性/p:VisualStudioVersion=11.0
。有关此问题的更多信息,请访问我的博客http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx