19

VisualStudio2008でT4テンプレートの実行をデバッグしようとしています。

Visual Studio 2008でのT4テンプレートのデバッグに関して私が見つけたすべての情報は、通常のコードファイルであるかのようにテンプレートにブレークポイント(赤い点)を設定できることを示しています。Clarius T4コードハイライターをインストールしているので、T4テンプレートに色が付いていますが、ブレークポイントを設定できません。 余白をクリックしても何も起こりません。

Debugger.Break()を試しましたが、VS.NETの新しいインスタンスが起動しますが、テンプレートからコードを読み込めません。「現在の場所で利用できるソースコードはありません」というダイアログが表示されます。これは、同じプロジェクトを別のインスタンスにロードした場合、または新しいインスタンスを起動した場合に発生します。

何が得られますか?

4

4 に答える 4

30

次のように設定します。

<#@ template debug="true" hostSpecific="true" #>
<#@ import namespace="System.Diagnostics" #>

次に、テンプレートで

Debugger.Launch();

VSは、VS2010の新しいインスタンスでJITデバッガーを開始します

于 2010-12-10T16:16:52.847 に答える
18

Visual Studio 2013の場合

  1. .ttファイルにブレークポイントを設定します
  2. ソリューションエクスプローラーで.ttファイルを右クリックします
  3. 「デバッグT4テンプレート」を選択します
  4. 終わり!

VisualStudioの2番目のインスタンスをアタッチする必要はありません。

于 2014-05-20T18:41:54.487 に答える
9

OK-それを理解しました。Olegの記事の内容に関係なく、新しいインスタンスを起動することはできません。(Sych氏に異議を唱えることはありません、彼のブログはT4コード生成の福音です!)

  1. VisualStudioの2番目のインスタンスを開始します。
  2. ファイル(任意のファイル)を開いて、[デバッグ]メニューが表示されるようにします。
  3. [プロセスにアタッチ...]を選択し、他のVS.NETインスタンスを選択します
  4. VS.NETの接続されたインスタンスにテンプレートを保存します(または右クリックして[カスタムツールの実行]を選択します)

出来上がり。

于 2010-03-23T16:04:52.833 に答える
6

テンプレートディレクティブでデバッグオプションをオンにしていることを確認してください。

<#@ template language = "C#" debug = "true"#>

これにより、T4はVisualStudioでのデバッグに必要なソースコードとシンボルファイルを保存します。

于 2010-03-23T21:00:59.763 に答える