私のローカル マシンから開発サーバーまで、Web Deploy 3.0 は次のコマンドを使用して Visual Studio 2012 発行プロファイルで正常に動作します。
msbuild .\myproj.csproj /verbosity:d /p:DeployOnBuild=true;PublishProfile=Develop;VisualStudioVersion=11.0;AllowUntrustedCertificate=true;ユーザー名=xx;パスワード=xx
この同じコマンドを CI サーバー (Jenkins の場合もありますが、これはすべてに適用されます) から実行すると、コマンドは正常に終了しますが、Web サイトはデプロイされません。
ログ出力を比較すると、ビルド サーバーによって大きなセクションがスキップされているように見えます。以下にリストされている 2 行の直後に発生しています (これらの 2 行の出力は、ローカルまたは CI サーバーで実行している場合と同じです)。
プロジェクト「C:_Application\proj\src\proj.Web\proj.Web.csproj」のファイル「C:\windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets」のターゲット「PrepareForRun」(ターゲット "CoreBuild" はそれに依存します): プロジェクト "proj.Web.csproj" 内のターゲット "PrepareForRun" のビルドが完了しました。
ローカルで実行している場合、これに続いて以下に示す内容が表示されます (さらに数百行のログが追加されます)。
false 条件のため、ターゲット "InsertAdditionalWebCofigConnectionStrings" はスキップされました。($(InsertAdditionalWebCofigConnectionStrings) And '@(_ConnectionStringsToInsert)' != '') は (True And '' != '') として評価されました。プロジェクト「C:_Application\proj\src\proj.Web」のファイル「C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets」のターゲット「_CleanWPPIfNeedTo」 \proj.Web.csproj" (ターゲット "PipelineCollectFilesPhase" はそれに依存します): タスク "ReadLinesFromFile"
CI サーバーでは、次のディレクトリが見つからないようです。
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets
ターゲットが見つからないと、黙って失敗しますか? このフォルダーはどこから来たのですか (CI サーバー上の Web フォルダー全体がありません)?