web-dev-qa-db-ja.com

MsBuildが公開プロファイルを見つけられない

TeamCity/MsBuildコマンドラインを介して展開しようとしている2つのプロジェクト(WCFC#サービスアプリとVB Web UI))を含むVS2012ソリューションがあります。各プロジェクトには公開プロファイルが含まれています-これを「テストプロファイル」と呼びましょう-IDEを使用して実行すると正常に機能します。

ただし、2つの連続するビルドステップとして実行すると、C#プロジェクトは正常にデプロイされますが、VBプロジェクトは次のエラーで失敗します:

[09:27:05] [ValidatePublishProfileSettings] GetPublishingLocalizedString [09:27:05] [GetPublishingLocalizedString] C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets( 4435、5):PublishProfileの値は「TestProfile」に設定され、「C:\ BuildAgent\work\61493e349d61af8c\Yms.Web.Ui__profiles\Test Profile.pubxml」でファイルが見つかると予想されますが、見つかりませんでした。

各ビルドステップは、MsBuild v4.0、Run Platform x64、ToolsVersion4.0を使用するようにセットアップされています。コマンドラインパラメータは次のとおりです。

/ P:Configuration = "テストプロファイル"
/p:DeployOnBuild = true/p:PublishProfile = "テストプロファイル"
/p:VisualStudioVersion = 11.0/p:Password = james2

プロジェクトではなくソリューションに対して単一のビルドステップとして実行すると、エラーメッセージの「Ui_profiles」が「PublishProfiles」に置き換えられることを除いて、同じエラーが発生します。

どんな助けでも大歓迎です、これは私をバティに駆り立てています

13
James McKeon

まったく同じ問題が発生しましたが、VS2010 Webアプリケーションプロジェクト(公開オプションを更新するためのAzure SDK 1.8アップデートを使用)の場合です。 MSによって提供されたWeb公開ターゲットは、公開プロファイルのパスを正しく評価しないように見えました。

私は2つの重要なことをすることになりました:

  • ビルドサーバーへのAzureSDK(1.8)のインストール(それ以外の場合、公開プロファイルは無視されました)
  • teamcityビルド構成で「PublishProfileRootFolder」パラメーターを強制する(それ以外の場合、これはMS Web公開ターゲットによって提供される誤ったパスを使用します)

私のMSBuildコマンドパラメータは次のようになりました。

/ P:DeployOnBuild = true
/P:PublishProfile = [マイプロファイルの名前(ファイル拡張子なし)]
/P:PublishProfileRootFolder = "%teamcity.build.checkoutDir%\ Source\Web Application\My Project\PublishProfiles"(公開プロファイルが保存されている場所)
/P:AllowUntrustedCertificate = true
/P:Password =%env.DomainPassword%

これが同じボートの誰かに役立つことを願っています!

24
Matt Woodward

Matt Woodwardによって提供された答えは、私を解決策に近づけましたが、1つの重要なステップが欠けていました。具体的には、MSBuildタスクのpublishProfileRootFolderプロパティを次のように指定する必要がありました。

<Target Name="Publish">
    <MSBuild Targets="Build" Projects="$(SolutionDir)\$(ProjectFile)"
    Properties="DeployOnBuild=true;publishProfile=UAT;publishProfileRootFolder=$(PublishProfileRootFolder);publishUrl=$(PublishUrl)" />
</Target>

また、$(PublishProfileRootFolder)の値を、コマンドラインパラメーターとして渡すのではなく、MSBuildプロジェクトファイルに直接埋め込むことを選択しました。

<PropertyGroup>
    <PublishProfileRootFolder>$(MSBuildProjectDirectory)\MyProjectPath\Properties\PublishProfiles</PublishProfileRootFolder>
</PropertyGroup>
2
Sam

今日、同様の問題に遭遇しました。私の場合、それは「パスが長すぎる」問題でした。公開プロファイルの名前を短くすると、Webデプロイパッケージが問題なくビルドされました。

2
Sander Engelen

APIWebプロジェクトでこの問題が発生しました。私の場合、解決策は、プロパティPublishProfileを使用したのと同じ方法でプロパティWebPublishProfileFileを追加することでした。その後、このエラーメッセージは消えました。

"c:\Windows\Microsoft.Net\Framework64\v4.0.30319\MSBuild.exe" C:\Projects\WebApp\WebAPIProject.csproj /p:DeployOnBuild=true /p:PublishProfile="C:\Projects\Publishes\WebAppPublishProfile.pubxml "/p:WebPublishProfileFile=C:\Projects\Publishes\WebAppPublishProfile.pubxml
0
BramscoChill