从TeamCity发布vs2012解决方案

Pel*_*lle 19 web-deployment teamcity-7.0 visual-studio-2012 msbuild-wpp

我正在使用Visual Studio 2012和发布功能.我创建了一个发布配置文件,将我的应用程序部署到开发服务器,并且在我的机器上从vs2012执行时效果很好.这是我的问题; 在开发服务器上我也安装了TeamCity,我想在构建完成后触发发布.所以我创建了一个简单的构建步骤,如下所示:

Build file path: .\src\Solution.sln
Targets: Rebuild
Command line parameters: /p:DeployOnBuild=true;PublishProfile=Ci
Run Code Online (Sandbox Code Playgroud)

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

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'. 
Run Code Online (Sandbox Code Playgroud)

Ci配置文件包含用户名和密码,当我在我的计算机上从Visual Studio运行发布时,该用户名和密码有效.我也尝试在构建步骤中传递用户名和密码作为参数,但我得到了相同的结果.我是否需要在管理员帐户下运行TeamCity服务才能使其正常运行?所有建议表示赞赏.

Say*_*imi 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>
Run Code Online (Sandbox Code Playgroud)

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

一个小小的添加可能与您的问题没有直接关系,但可能对其他人可能会有所帮助.如果要构建.csproj/.vbproj文件(并且可能在某些使用.sln文件的情况下),则应传入该属性/p:VisualStudioVersion=11.0.有关这方面的更多信息,请访问我的博客http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx