Vishal Joshi的精彩PDC演讲available here描述了Visual Studio 2010中的新MSDEPLOY功能,以及如何在TFS中部署应用程序。 (Scott Hanselman也发表了精彩的演讲,但他没有参加TFS)。
您可以在TFS2010中使用MSBUILD来调用MSDEPLOY,以将程序包部署到IIS。这是通过MSBUILD的参数完成的。
演讲解释了一些命令行参数,例如:
/p:DeployOnBuild
/p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True
/p:MSDeployPublishMethod=InProc
/p:MSDeployServiceURL=localhost
/p:DeployIISAppPath="Default Web Site"
但是有关此的文档在哪里-我找不到任何文档?
我整天都在努力使它正常工作,但并不能完全正确,并最终导致各种错误。如果我运行程序包的
cmd
文件,它将完美部署。如果我通过Visual Studio运行WebDeploy,那么它也可以完美运行。但是我想使用这些参数通过
msbuild
运行整个部署,而不是单独调用msdeploy
或运行包.cmd
文件。我怎样才能做到这一点?PS。是的,我确实正在运行
Web Deployment Agent Service
。我也有在IIS下运行的管理服务。我试过同时使用。我正在使用的Args:
/p:DeployOnBuild=True
/p:DeployTarget=MsDeployPublish
/p:Configuration=Release
/p:CreatePackageOnPublish=True
/p:DeployIisAppPath=staging.example.com
/p:MsDeployServiceUrl=https://staging.example.com:8172/msdeploy.axd
/p:AllowUntrustedCertificate=True
给我 :
C:\ Program Files(x86)\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets(2660):VsMsdeploy失败。(无法联系远程代理(URL https://staging.example.com:8172/msdeploy.axd?site=staging.example.com)。请确保在目标计算机上安装并启动了远程代理服务。)错误详细信息:无法联系远程代理(URL https://staging.example.com:8172/msdeploy.axd?site=staging.example.com)。确保在目标计算机上安装并启动了远程代理服务。收到不支持的回复。响应 header “MSDeploy.Response”为“”,但应为“v1”。远程服务器返回错误:(401)未经授权。
最佳答案
IIS7 +相关答案....
好的-这就是我最终要做的。在此主题/问题中,由Simon Weaver发表或多或少。
但是,当涉及到MSBuild设置时,大多数人都在使用以下设置:/p:MSDeployPublishMethod=RemoteAgent
,它是不正确IIS7的。使用此设置意味着TFS尝试连接到URL:https://your-server-name/MSDEPLOYAGENTSERVICE
但是要访问该URL,要进行身份验证的用户必须是Admin。哪个吓坏了。 (并且您需要勾选Admin-override规则)。我认为该网址适用于IIS6。
当您尝试使用RemoteAgent连接时,这是标准错误消息:-
Standard 401 Frak Off u suck RemoteAgent,错误
所以..您需要将MSDeployPublishMethod
更改为此:
/p:MSDeployPublishMethod=WMSVC
WMSVC
代表Windows管理器服务。基本上,它是Remote Agent的较新包装,但现在允许我们更正用户名和密码。.在此,用户不必是管理员! (高兴!)因此,您现在可以正确设置您希望每个网站访问..的用户。现在,它还会尝试访问url:
https://your-web-server:8172/MsDeploy.axd
Publish窗口所要做的! (OMG-> PENNY DROPS !! BOOM!)这是我的最终MSBuild设置:
/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish
/p:MSDeployPublishMethod=WMSVC
/p:MsDeployServiceUrl=your-server-name
/p:DeployIISAppPath=name-of-the-website-in-iis7
/p:username=AppianMedia\some-domain-user
/p:password=JonSkeet<3<3<3
/p:AllowUntrustedCertificate=True
注意到用户名中包含域名吗?你需要那里。另外,在我的图片中,我已允许DOMAIN USERS访问该网站进行管理。因此,我添加的新用户帐户(TFSBuildService)具有
Domain Users
组的Membership身份,这就是所有工作原理。现在-如果您已阅读所有内容,请笑一笑(因为它们是SOOOOOOOO 2007)...。
关于visual-studio-2010 - 如何获得TFS2010通过MSBUILD为我运行MSDEPLOY?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2636153/