1

dbml (Linq to Sql) ファイルからコードを生成したいのですが、dbml ファイルはプロジェクトの多くの部分に配置されているので、この目的のためにカスタム ツールを作成しました。

しかし、問題は、dbml には既に MSLinqToSQLGenerator カスタム ツールが含まれていることです。

1 つのファイルに 2 つのカスタム ツールを設定する方法を知っていますか? いいえの場合, それについてのアイデアを教えてください

4

2 に答える 2

2

Visual Studioは、ファイルごとに1つの「カスタムツール」のみをサポートしますが、コンパイル前の手順を追加して、必要なものに対して他のツールを実行できます。たとえば、プロジェクトの1つの[ビルドイベント]タブで、次のプリコンパイル手順を設定しています。

"$(DevEnvDir)..\..\..\Common Files\Microsoft Shared\TextTemplating\10.0\TextTransform" "$(ProjectDir)DataContext\Northwind.proxy.tt"

T4コマンドラインツールを見つけるために、ここでは多くの相対的なパスが実行されていますが、あなたはその考えを理解しています。この特定のT4ファイルは、出力を生成するために読み取る.dbmlファイルと同じディレクトリにあることを前提としています。

プロジェクトをコンパイルする前に、必要な外部ツールを実行できます。最初の実行後、ツールの出力がプロジェクトに含まれていることを確認してください。その後、ファイルはPRE-compileステップの一部として変更されるため、ビルドごとに常に更新されます。

于 2011-05-16T11:31:25.103 に答える
2

テンプレートの役割に 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 コードが効果的に実行されます。

于 2011-05-17T04:29:21.557 に答える