我目前使用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构建过程中工作正常。
在哪里可以找到格式为
的MSDeploy参数的完整文档列表/ P:PARAM =值
其他信息:
这里有一个参数列表:
但是,这不是一个完整的列表 - 例如,此列表不包括DeployAsIisApp或SkipExtraFilesOnServer,它们都是Team City Build中的参数。
此相关问题(可能重复):Valid Parameters for MSDeploy via MSBuild包含一些参数 - 但仍不是明确的列表。
答案 0 :(得分:7)
首先,简短的回答是你无法找到完整的清单。 MSBuild没有您可以选择的完整参数列表,因为您可以发送任何您喜欢的参数。它是MSBuild调用者和MSBuild构建脚本(例如vs sln或csproj文件)的作者之间的通信方式。
如果构建脚本使用参数,则使用它,否则忽略它。
所以这是对msbuild的有效调用:
msbuild /p:<anything>=<anything>
其次,您不应该使用/ p:命令选项从teamcity向msbuild发送参数。而是在teamcity构建配置中设置配置或系统属性。它们将作为参数自动传递给msbuild。
答案 1 :(得分:5)
以下是Visual Studio Team Services在创建ASP.NET(预览版)构建定义时使用的参数:
/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>
您可以推导出以下列表: