VisualStudio2012。SQLServerデータベースプロジェクト。
ソリューションには、Debug、DevDb、TestDb、LocalDbの4つのビルド構成が作成されました。
プロジェクトには、DevDb.publish.xml、TestDb.publish.xml、LocalDb.publish.xmlの3つの公開プロファイルが作成されました。
F5ボタンを押す(!)
- ビルド構成がDebugの場合は、プロジェクトプロパティの接続文字列を使用してプロジェクトをデプロイします。
- ビルド構成が DevDb、TestDb、またはLocalDbの場合、対応する公開プロファイルからの接続文字列を使用してプロジェクトを公開します。
これを行うには、プロジェクト(.sqlproj)xmlを編集し、Deployターゲットの呼び出しをキャッチして、標準のDeployターゲットをカスタム動作に置き換えようとします。
<Target Name="Deploy">
<!-- The first statment is for Debug configuration -->
<MSBuild Condition=" '$(Configuration)' == 'Debug' "
Targets="Deploy"
Projects="$(MSBuildProjectFile)"
Properties="Configuration=$(Configuration);"
/>
<!-- The second statement is for DevDb, TestDb, LocalDb configurations -->
<MSBuild Condition=" '$(Configuration)' != 'Debug' "
Targets="SqlPublish"
Projects="$(MSBuildProjectFile)"
Properties="SqlPublishProfilePath=$(Configuration).publish.xml;
Configuration=$(Configuration);"
/>
</Target>
2番目のステートメントは正常に機能し、適切な宛先にデプロイできます。
問題は最初のステートメントにあります-それは循環依存を生成します。
エラーMSB4006:ターゲット「Deploy」を含むターゲット依存関係グラフに循環依存関係があります。
私の質問は、標準ターゲットを交差させる(キャッチして置き換える)方法と、標準ターゲットを再度呼び出す必要があるかどうかです。
それとも、私は車輪の再発明を試みていますか?私がやりたいことをする別の方法がありますか?(私が欲しいのは、上記の「F5ボタンを押す」という言葉で説明されています:)