17

我目前正在运行 Visual Studio Team System 2010 RC,我正在尝试获取构建服务设置来构建我的解决方案并在其中部署 3 个 Web 应用程序。我创建了一个名为 Integration 的自定义构建配置,并在每个 Web 应用程序的属性的“打包/发布”选项卡上设置了“要在目标服务器上使用的 IIS 网站/应用程序名称”。

在我的构建定义中,我设置了以下参数:

/p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:MSDeployPublishMethod=InProc /p:MsDeployServiceUrl= http://my-server-name:8172/msdeploy.axd /p:EnablePackageProcessLoggingAndAssert=True

但是,当我运行构建时,对于所有三个 Web 应用程序,我都会收到以下错误:

更新 setAcl (MyProjectName)。

C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets(3481,5):错误:Web 部署任务失败。(试图执行未经授权的操作。)

我不认为这是我的实际问题。此错误发生在日志中的以下条目之后:更新 setAcl 这是导致错误消息的原因,但似乎 MSDeploy 正在尝试部署到构建服务器上的本地 IIS,而不是我使用 MsDeployServiceUrl 参数指定的服务器。

查看 C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets 中的目标文件后,我添加了 EnablePackageProcessLoggingAndAssert,它添加了额外的日志记录。日志显示 MsDeployServiceUrl 的值的空字符串。我还在目标中注意到 MsDeployServiceUrl 有一个小写字母 s,这有点令人困惑,因为任务名称 MSDeployPublish 有一个大写字母 S。我尝试使用大写字母,然后再次使用小写字母,但都不起作用。

其他需要注意的事项:

  1. 我的构建服务作为网络服务运行。
  2. 我尝试部署到的服务器位于另一个域上。
  3. 我还尝试将 /p:username=mydomain\myusername /p:password=mypassword 添加到 MSBuild 参数列表,但这没有帮助。

有谁知道我是否提供了正确的参数?或者给我正确的?

谢谢

4

3 回答 3

26

经过多轮更改参数后,我能够找到解决方案并成功部署构建。我最终使用的参数是:

/p:DeployOnBuild=True
/p:DeployTarget=MSDeployPublish 
/p:MSDeployPublishMethod=**RemoteAgent** 
/p:MsDeployServiceUrl=http://my-server-name
/p:username=myusername 
/p:password=mypassword

似乎在使用InProcMSBuildMSDeployPublishMethod 会忽略MsDeployServiceUrl并始终尝试部署到本地服务器。我将其更改为RemoteAgent并成功部署。我确实注意到包文件不再包含在MyWebApplication_Package文件夹中,但这对我来说没什么大不了的。

于 2010-04-16T15:34:39.493 回答
0

考虑到 vs2010 是 RTM 的,您可能会考虑只升级并查看问题是否消失。

于 2010-04-15T17:41:34.310 回答
0

对于 Team Build 正在运行的构建,您指定了哪个文件?如果它是一个解决方案文件,那么仅仅将这些属性传递给它并不意味着它们会在构建时传播到每个项目文件。构建解决方案文件时,只有有限的一组属性会传递给正在构建的项目。如果是这种情况,您应该创建一个 .proj 文件,该文件基本上将替换您的解决方案文件并传入这些属性。

我最近写了一篇关于如何用 MSBuild 文件替换您的解决方案文件的博客。

如果这不适用于您或对您没有帮助,请告诉我。

仅供参考,您可能也对 MSDeploy 上的其他线程感兴趣,但您在这里遇到的问题不一样。如何让 TFS2010 通过 MSBUILD 为我运行 MSDEPLOY?.

于 2010-04-16T04:12:23.060 回答