8

Visual Studio 2012 を使用して、T4 テンプレートから XML を生成しています。テンプレートの上部は次のようになります

<#@ template language="VBv4" hostspecific="True" debug="True" #>
<#@ output extension="wmef" #>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>

T4 テンプレートは XML を正しく生成します。これは問題ありません。ただし、ビジュアルスタジオは混乱しており、さらにテンプレート自体を XML として処理しようとし、実際の XML ではなく XML のテンプレートであるため、XML の形式が正しくないことを示すビルドエラーを報告します。

最初に .tt ファイルを編集するときは、すべて問題ありません。ただし、XML ファイルが生成され、それをエディターにロードして確認し、.tt ファイルに戻ると、突然 .tt ファイルの構文が強調表示されて XML のようになり、ビルド エラーが表示されます。

おそらく、これは m$oft の単なるバグです

ここで何が起こっているのかについてのアイデアはありますか?

4

2 に答える 2

9

これはVSのバグです。.ttファイル内の行を置き換えることで回避できます

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<# WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>"); #>

VSがテンプレートファイルのXML形式について混乱すると、上記のように編集して再起動した後でも、その混乱が続くようです。.ttそれを回避する唯一の方法は、プロジェクトから既存のファイルを削除し、最初から再作成することだと思われます。

この変更により、.ttファイルに<?xml?>タグがなくなるため、VSはそれをXMLファイルとは見なしません。リテラル文字列内のすべてを無視します。

これは、 XMLを含むT4テンプレートが解析エラーを引き起こすのと同じ問題のようですが、回避策がOPによって確認または受け入れられなかったため、ここに再投稿します。

于 2012-09-09T01:07:29.250 に答える
3

Reinierの答えのフォローアップとして...

ファイルを削除して再作成すると機能することがわかりましたが、プロジェクトからファイルを除外する必要はありません。

最速/最も簡単な方法は次のとおりです。

  1. ファイルを閉じます。
  2. Windows エクスプローラーを使用して、T4 ファイルのみを削除します。この方法では、.proj ファイルは影響を受けません。
  3. ソース管理から最新のものを取得して、それらを元に戻します。
于 2013-03-19T10:20:00.143 に答える