11

ビルド サーバーで Service Fabric アプリケーションをビルドしようとしています。.sln ファイルをビルドすると、sfproj の Package ターゲットが実行されません。予想通り。MSBuild でこのターゲットを実行できないようです。

まず、.sln ファイルに対してビルドするときに使用できるターゲットは、標準のビルドおよびパブリッシュ ターゲットのみです。

次に、.sfproj 自体に対してビルドすると、ターゲットが実行されます。ただし、$(BuildPlatform) の不一致のため、.sfproj によって参照されるプロジェクトは正しくビルドされません。.sfproj には x64 プラットフォームがあります。私の他のプロジェクトのほとんどは Any CPU です。

これは Service Fabric に関する質問ではなく、一般的な MSBuild に関する質問だと思います。プロジェクトのすべてのプラットフォーム オプションを統合する必要のないソリューションを探しています。Service Fabric は本当に x64 のみであり、私の他のプロジェクトは本当にすべての CPU です。

[編集]

私はこれを解決しました。私がしたことは、.sfproj ファイルに という新しいターゲットを追加し、MaybePublishそれをデフォルトのターゲットの 1 つとして設定することでした。for がMaybePublishあります。に設定しています。基本的に、ソリューションのビルド時にプロパティが設定されている場合、このターゲットはオプションで Service Fabric アプリケーションをパッケージ化します。Condition'$(Package)' == 'true'DependsOnTargetPackage

これはおそらくDeployOnBuild、Web パブリッシング プロジェクトで機能する方法だと思います。Service Fabric ターゲット ファイルには、既定でこの種類のサポートが含まれている必要があります。

4

5 に答える 5

9

わさびの答えを明確にするのに役立ちます。これを機能させるために私がしたことは次のとおりです。

ファイルに以下Targetを追加しました*.sfproj

<Target Name="CreatePackage" Condition="'$(CreatePackage)' == 'true'" DependsOnTargets="Package" />

また、Project要素のDefaultTargets属性値を に変更しましたBuild;CreatePackage

自動ビルドの一部としてパッケージを作成するため/p:CreatePackage="true"に、ビルド ソリューション ステップの引数として含めました。

于 2016-05-26T14:25:04.400 に答える