web-dev-qa-db-ja.com

TeamCityのMSBuildの/ P MSDeploy引数の完全なリスト

現在、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 = Value

追加情報:

ここにパラメータのリストがあります:

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

ただし、これは完全なリストではありません。たとえば、このリストにはDeployAsIisAppまたはSkipExtraFilesOnServerは含まれていません。どちらもTeam City Buildで機能するパラメーターです。

また、この関連する質問(重複している可能性があります): MSBuildを介したMSDeployの有効なパラメーター これにはいくつかの引数が含まれていますが、まだ決定的なリストではありません。

23
Kaine

まず、簡単な答えは、完全なリストが見つからないということです。 MSBuildには、好きなパラメーターを送信できるため、選択できるパラメーターの完全なリストがありません。これは、MSBuildの呼び出し元とMSBuildビルドスクリプトの作成者(vs slnまたはcsprojファイルなど)との間の通信手段です。

ビルドスクリプトがパラメータを使用する場合、それが使用されます。それ以外の場合は無視されます。

したがって、これはmsbuildの有効な呼び出しです。

msbuild /p:<anything>=<anything>

第二に、/ p:コマンドオプションを使用してteamcityからmsbuildにパラメーターを送信しないでください。代わりに、teamcityビルド構成で構成またはシステムプロパティを設定します。これらは、パラメータとしてmsbuildに自動的に渡されます。

8
8DH

ASP.NET(プレビュー)ビルド定義を作成するときにVisual Studio Team Servicesが使用するパラメーターは次のとおりです。

/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
  • SiteUrlToLaunchAfterPublish
  • MSDeployServiceURL
  • DeployIisAppPath
  • RemoteSitePhysicalPath
  • AllowUntrustedCertificate
  • SkipExtraFilesOnServer
  • DeployAsIisApp
  • MSDeployPublishMethod
  • UserName
  • SavePWD
  • PublishDatabaseSettings
5
Original Poster