2

私のチームは、(私が参加する前に) 何年もの間、SQL Server データベース プロジェクトを採用していませんでした。主な理由は、ビルドできない循環参照を持つアイテムがあるためです。推奨されるアプローチは、循環参照を除外または修正することだと認識しています。

Buildただし、技術的負債をすべて修正することなくそれらを使用できることを証明するために、SQL サーバー プロジェクトのビルド プロセスをフックして、アイテム グループからアイテムを削除したいと考えています。私はmsbuildに非常に精通していますが、これまでのところ、ビルドに含まれているファイルを変更して失敗しているようには見えません。

スキーマの比較を試みるまで、正常に動作するNone代わりにファイルを設定します。Buildそれらをビルドに戻すか、で終わる新しいファイル名でそれらを再度追加する場所_1.sql

<Target Name="CustomSqlHook" BeforeTargets="CheckRequiredProperties;BeforeBuild;All;_SetupSqlBuildInputs;SqlBuild;SqlStaticCodeAnalysis;ResolveArtifactReferences;Build">
    <Message Text="Build Before: @(Build)" Importance="high" />
    <Message Importance="High" Text="custom sql hooked" />
    <Message Importance="High" Text="build items are @(Build-&gt;Count())" />
    <ItemGroup>
      <Build Remove="project\Views\uvw_survey_history.sql" />
    </ItemGroup>
    <Message Text="-------------------------" />
    <Message Text="Build After: @(Build)" Importance="high" />
    <Message Importance="High" Text="build items are @(Build-&gt;Count())" />
</Target>

これは、ビルド グループに含まれるアイテムの数が 2978 から 2977 になることを示しています。ただし、ビルドは同じファイルで失敗します。 sqlエラー

4

1 に答える 1

1

プロジェクトに構成を追加できます (デフォルトでデバッグ/リリースがあります - 「スキーマ」を追加します)。

次に、プロジェクト ファイルを手動で編集して、スキーマ比較を行うときにのみ含めたい各項目に次の属性を追加します。

Condition="'$(構成)' == 'スキーマ'"

于 2014-07-03T14:00:14.230 に答える