チーム ビルド機能を使い始めたばかりですが、非常に単純なことを行うために必要な作業の量が多すぎて、少々圧倒されているように感じています。現在の私のセットアップは、Web アプリ、アセンブリ アプリ、テスト アプリを使用したソリューションです。Web アプリには、ファイルシステム経由で公開する PublishProfile が設定されています。
私は TFS ビルド定義を設定しており、現在はソリューション全体を夜間にビルドし、古いビルドのバックアップとしてネットワーク共有にドロップしています。今やりたいのは、既に設定した PublishProfile で Web アプリを公開することだけです。これは本当に簡単なことだと思いますが、丸一日 MSBuild コマンドをいじっていますが、うまくいきません。助けてください!
ベストアンサー1
残念ながら、発行プロファイルの共有は MSBuild ではサポートされておらず、実装もされていません。プロファイルから発行するロジックは VS 自体に含まれています。幸い、プロファイルには多くの情報が含まれていないため、必要なことを実現する方法があります。私たちのターゲットは、発行ダイアログで実行されるのとまったく同じ手順を具体的にサポートしていませんが、チーム ビルドから同じ結果を得るには 2 つの選択肢があります。ここではその両方について説明します。
デプロイするためにチーム ビルド定義を設定する場合、ビルド プロセスの MSBuild 引数にいくつかの値を渡す必要があります。これを強調表示した下の画像を参照してください。
オプション1:次の引数を渡します。
/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false
これらのパラメータについて少し説明し、結果を示してから次のオプションについて説明します。DeployOnBuild=true
:これは、プロパティで定義されたターゲットを実行するようにプロジェクトに指示しますDeployTarget
。
DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder
: DeployTarget ターゲットを指定します。
PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish"
: パッケージ ファイルが書き込まれる場所を指定します。これは、パッケージ化される前にファイルが書き込まれる場所です。
AutoParameterizationWebConfigConnectionStrings=false
: これは、Web 発行パイプライン (WPP) に、web.config ファイル内の接続文字列をパラメーター化しないように指示します。これを指定しない場合、接続文字列の値は $(ReplacableToken_dummyConStr-Web.config Connection String_0) のようなプレースホルダーに置き換えられます。
これを実行したら、ビルドを開始できます。すると、PackageTempRootDir の場所内に PackageTmp フォルダーが見つかり、そこに必要なコンテンツが含まれています。
オプション2:したがって、前のオプションでは、PackageTmp という名前のフォルダーが作成されることに気付いたかもしれませんが、これを望まない場合は、代わりに次のオプションを使用できます。
/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;_PackageTempDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false
ここでの違いは、PackageTempRootDir
の代わりに を渡すことです_PackageTempDir
。 最初から を推奨しない理由は、_ で始まる MSBuild プロパティは、将来のバージョンでは別の意味になるか、まったく存在しない可能性があるという意味で、プロパティが本質的に「内部」であることを意味するためです。 したがって、自己責任で使用してください。
オプション3
以上のことから、ビルドを使用して Web をパッケージ化することもできます。これを行うには、次の引数を使用します。
/p:DeployOnBuild=true;DeployTarget=Package
ビルドのドロップ フォルダーでこれを行うと、通常どおり _PublishedWebsites フォルダーが見つかります。その中に、{ProjectName}_Package フォルダーがあります。ここで、{ProjectName} はプロジェクトの名前です。このフォルダーには、パッケージ、.cmd ファイル、パラメーター ファイル、およびその他のいくつかのファイルが含まれます。これらのファイルを使用して、Web を展開できます。
情報過多ではなかったことを願います。