MSBuild参数中的DeployIisAppPath设置预期是什么?

9
SERVERNAME(myDomain\Username)
   Application Pools
   Sites
      DEV Site1
      DEV Site2
      dev Site 3
         bin
         Content
         ...
         Views
      etc ...

这是我们的DEV Web服务器的基本布局。我们的DEV Web服务器上有许多网站在运行。我正在尝试使用TFS 2013 Build根据Vishal JoshiMicrosoft和其他文章的说明将我的网站发布到DEV服务器。
我的错误信息是“ERROR_SITE_DOES_NOT_EXIST”。基本修复方法对我没有帮助。
在我的示例中,我使用了/p:DeployIisAppPath="dev Site 3"。该站点下没有定义应用程序。

Microsoft的说明是无用的。我以为只需要使用IIS网站名称,但这并没有取得成功。这个参数期望的值是什么?我是否需要应用程序池名称?有没有一条命令可以针对IIS发出,以导出所有可用AppPaths的列表?一旦我在DEV服务器上解决了这个问题,我就必须在STG服务器上做同样的事情。

[更新1] 添加完整的MSBuild参数

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=True 
/p:MSDeployPublishMethod=InProc 
/p:MSDeployServiceUrl=http://SERVER:PORT/MsDeployAgentService
/p:DeployIisAppPath="dev Site 3"

你是否正在使用 MSDeployPublish (例如 /p:DeployTarget=MsDeployPublish)? - CodeWarrior
另外,你在服务 URL 中也指定了站点位置吗?例如 '/p:MsDeployServiceUrl="https://SERVER:8172/MsDeploy.axd?Site=direct"' - CodeWarrior
谢谢@CodeWarrior,我更新了我的问题。我应该包含完整的上下文。 - MADCookie
1个回答

10

您的服务器位于您的域内,因此我将使用我们针对内部服务器的解决方案。对于我们位于DMZ的服务器,我必须想出另一种解决方案。

MSBuild参数

/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=False 
/p:MSDeployPublishMethod=WMSvc 
/p:MsDeployServiceUrl="https://SERVER:8172/MsDeploy.axd?Site=direct" 
/p:DeployIisAppPath="direct" 
/p:AllowUntrustedCertificate=True 
/p:AuthType=NTLM 
/p:UserName=

这个解决方案使用安装在Web服务器上的WMSvc允许TFS构建过程在部署时访问它所需的服务器部分。我没有尝试过MSDeployAgentService,所以对于那个我不确定。在我的情况下,我不会在部署时创建一个软件包(我记得当我那样做时返回了一个错误,尽管我不记得是什么错误)。

另外,最后三个参数对于TFS Build Service账户登录VMSvc并执行其工作是必要的。将UserName留空会导致它作为运行帐户登录(无需提供密码,耶!)。

构建日志

这是一个成功部署的构建日志示例输出。

   MSDeployPublish:
     Start Web Deploy Publish the Application/package to https://SERVER:8172/MsDeploy.axd?Site=direct ...
     Starting Web deployment task from source: manifest(C:\Builds\1\Direct\Continuous Integration (SERVER)\Binaries\_PublishedWebsites\WEBPROJECTNAME_Package\Archive.SourceManifest.xml) to Destination: auto().
     Adding ACL's for path (direct)
     Adding ACL's for path (direct)
     Updating file (direct\bin\Content\images\buttonBkgHover.png).
          ... Removed for brevity => This section is all 'Updating file (PATH).'
     Updating file (direct\Web.config).
     Adding ACL's for path (direct)
     Adding ACL's for path (direct)
     Successfully executed Web deployment task.
     Publish is successfully deployed.
   PipelineDeployPhase:
     Publish Pipeline Deploy Phase

你的网站名称中有空格吗?你的例子是“direct”,所以我假设那是网站的名称,并在两个参数中重复。如果有空格,我会假设你会在网站查询字符串值中使用%20。 - MADCookie
在 URL 中,我会期望看到 %20。在 DeployIisAppPath 中,由于它在引号中,我只需要看到一个空格。 - CodeWarrior
请问您能否友好地向我展示一下构建日志中的记录,以告诉我 MSDeploy 是否成功了呢?我的构建没有失败,但是我没有看到服务器端代码有任何变化。我不知道在 MSBuild 日志中应该寻找什么来确认 MSDeploy 是否被调用并正常工作。 - MADCookie
1
好的,已添加。在服务器上更新文件时,中间缺少约1500行,每行一个。我保留了第一行和最后一行。 - CodeWarrior
哦!非常有帮助。所以我没有在我的日志中看到这些内容,因此无法工作。 - MADCookie
嗯。请记住这些行是来自诊断级输出。确保您正在运行它。 - CodeWarrior

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接