来自TeamCity的MSBuild的/P MSDeploy参数的完整列表

31
我目前在本地服务器上使用TeamCity中的MSBuild运行程序进行持续集成,这很有效。但是,我无法找到符合TeamCity期望格式的MSDeploy支持的完整命令行开关列表。
目前,我在“参数”部分中使用以下开关:
  /P:Configuration=OnCommit
  /P:DeployOnBuild=True
  /P:DeployTarget=MSDeployPublish
  /P:MsDeployServiceUrl=https://CIServer:8172/MsDeploy.axd
  /P:AllowUntrustedCertificate=True
  /P:MSDeployPublishMethod=WMSvc
  /P:CreatePackageOnPublish=True
  /P:UserName=Kaine
  /P:Password=**********
  /P:DeployIISAppPath="OnCommit/MySite"
  /P:SkipExtraFilesOnServer=True
  /P:DeployAsIisApp=True

所有这些似乎都很好用,MSDeploy的工作也符合预期。
问题出在我想要添加其他参数时。
我查找了MSBuild参数和MSDeploy文档,但我只能找到像这样的命令行参数:
msbuild SlnFolders.sln /t:NotInSolutionfolder:Rebuild;NewFolder\InSolutionFolder:Clean

http://msdn.microsoft.com/en-us/library/ms164311.aspx

看起来这些命令行参数的参考资料与 /P: 格式不对应 - 例如 CreatePackageOnPublish 和 DeployIISAppPath 不是被识别的命令行参数,但在 TeamCity 构建过程中它们可以正常工作。

我在哪里可以找到以 /P:Param=Value 格式的 MSDeploy 参数的完整文档列表?

附加信息:

这里有一个参数列表:

http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.build.workflow.activities.msbuild_properties.aspx

然而这不是一个完整的列表 - 例如,这个列表不包括 DeployAsIisApp 或 SkipExtraFilesOnServer,它们都是从 Team City Build 中工作的参数。

此外,还有一个相关问题(可能是重复的):Valid Parameters for MSDeploy via MSBuild,其中包含一些参数 - 但仍然不是一个明确的列表。


针对有兴趣的人,更新了vs2017 MSBuild参考文献: https://learn.microsoft.com/en-au/visualstudio/msbuild/common-msbuild-project-properties - dalcam
2个回答

17

首先,简短的回答是你无法找到完整的参数列表。MSBuild没有完整的参数列表可供选择,因为你可以发送任何你喜欢的参数。它是MSBuild调用者和MSBuild构建脚本的作者(例如vs sln或csproj文件)之间的通信手段。

如果构建脚本使用该参数,则会被使用,否则将被忽略。

因此,这是对msbuild的有效调用:

msbuild /p:<anything>=<anything>

其次,您不应使用/p命令选项从TeamCity向msbuild发送参数。相反,在TeamCity构建配置中设置配置或系统属性。它们将自动作为参数传递给msbuild。


7
以下是使用Visual Studio Team Services创建ASP.NET(Preview)构建定义时所使用的参数:

/p:DeployOnBuild=true 
/p:WebPublishMethod=Package 
/p:PackageAsSingleFile=true 
/p:SkipInvalidConfigurations=true 
/p:PackageLocation="$(build.artifactstagingdirectory)\\"

可以从这些示例中定义的<PropertyGroup />块进行推断:

https://msdn.microsoft.com/en-us/library/ff398069(v=vs.110).aspx

参考这个示例:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>Package</WebPublishMethod>
    <LaunchASiteUrlAfterPublish>False</LaunchASiteUrlAfterPublish>
    <SiteUrlToLaunchAfterPublish />
    <MSDeployServiceURL />
    <DeployIisAppPath />
    <RemoteSitePhysicalPath />
    <AllowUntrustedCertificate>False</AllowUntrustedCertificate>
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <DeployAsIisApp>True</DeployAsIisApp>
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    <UserName />
    <SavePWD>True</SavePWD>
    <PublishDatabaseSettings>
      <!— this section omitted to keep the example short -->
    </PublishDatabaseSettings>
  </PropertyGroup>
</Project>

你可以得到以下列表:
  • WebPublishMethod(网站发布方法)
  • LaunchASiteUrlAfterPublish(发布后启动站点的URL)
  • SiteUrlToLaunchAfterPublish(发布后要启动的站点URL)
  • MSDeployServiceURL(MSDeploy服务URL)
  • DeployIisAppPath(部署IIS应用程序路径)
  • RemoteSitePhysicalPath(远程站点物理路径)
  • AllowUntrustedCertificate(允许不受信任的证书)
  • SkipExtraFilesOnServer(跳过服务器上的额外文件)
  • DeployAsIisApp(部署为IIS应用程序)
  • MSDeployPublishMethod(MSDeploy发布方法)
  • UserName(用户名)
  • SavePWD(保存密码)
  • PublishDatabaseSettings(发布数据库设置)

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