dbml (Linq to Sql) ファイルからコードを生成したいのですが、dbml ファイルはプロジェクトの多くの部分に配置されているので、この目的のためにカスタム ツールを作成しました。
しかし、問題は、dbml には既に MSLinqToSQLGenerator カスタム ツールが含まれていることです。
1 つのファイルに 2 つのカスタム ツールを設定する方法を知っていますか? いいえの場合, それについてのアイデアを教えてください
dbml (Linq to Sql) ファイルからコードを生成したいのですが、dbml ファイルはプロジェクトの多くの部分に配置されているので、この目的のためにカスタム ツールを作成しました。
しかし、問題は、dbml には既に MSLinqToSQLGenerator カスタム ツールが含まれていることです。
1 つのファイルに 2 つのカスタム ツールを設定する方法を知っていますか? いいえの場合, それについてのアイデアを教えてください
Visual Studioは、ファイルごとに1つの「カスタムツール」のみをサポートしますが、コンパイル前の手順を追加して、必要なものに対して他のツールを実行できます。たとえば、プロジェクトの1つの[ビルドイベント]タブで、次のプリコンパイル手順を設定しています。
"$(DevEnvDir)..\..\..\Common Files\Microsoft Shared\TextTemplating\10.0\TextTransform" "$(ProjectDir)DataContext\Northwind.proxy.tt"
T4コマンドラインツールを見つけるために、ここでは多くの相対的なパスが実行されていますが、あなたはその考えを理解しています。この特定のT4ファイルは、出力を生成するために読み取る.dbmlファイルと同じディレクトリにあることを前提としています。
プロジェクトをコンパイルする前に、必要な外部ツールを実行できます。最初の実行後、ツールの出力がプロジェクトに含まれていることを確認してください。その後、ファイルはPRE-compileステップの一部として変更されるため、ビルドごとに常に更新されます。
テンプレートの役割に LINQ to SQL T4 ジェネレーターを含めると、T4 を適切に制御できます。
私の理解が正しければ、.dbml ジェネレーターのデフォルトの動作を維持したいだけでなく、独自の動作も追加したいと考えています。
これは少し「古い」ように見え、私はしばらくの間 LINQ to SQL を個人的に使用していませんでしたが、標準の .dbml ジェネレーターと同等のものを生成する T4 ジェネレーターの代わりにこのまま使用しました。
https://github.com/damieng/L2ST4
それが VS 2010 バージョンで最新かどうかはわかりませんが、標準の .dbml 生成コードとこの T4 出力をいつでも比較し、適切な変更を行って同一の結果を得ることができます。
もちろん、単純に複数の異なるジェネレーターを用意して、「すべてのテンプレートを変換」で実行することもできますが、質問に基づいて、ジェネレーターをファイル固有のカスタム ツールにアタッチする必要があります。
「T4ScriptFileGenerator」カスタム ツールをファイルに追加するT4 Toolbox https://github.com/olegsych/T4Toolboxもチェックアウトすることをお勧めします (既に慣れている場合を除きます) 。ファイルが変更されると、T4 コードが効果的に実行されます。