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/

10-11 22:12