4

Web および Windows プロジェクトの構成ファイル用に T4 テンプレートを作成しました。マスター web.config と、他の環境 (web.ci.config など) のすべての構成を正常に生成できます。ただし、次のようなマスター tt ファイルのエラーを取り除くことができませんでした。

  • 文字「#」、16 ​​進値 0x23 は、XML 名では無効です。
  • 文字「<」、16 ​​進値 0x3c は、XML 属性値では無効です。
  • 予期しない XML 宣言です。XML 宣言はドキュメントの最初のノードである必要があり、その前に空白文字を使用することはできません。

xml スキーマまたは参照が欠落しているはずですが、どうすればよいですか?


私のファイルは次のようになります。

<#@ template debug="true" hostSpecific="true" #>
<#@ output extension= ".config" #>  
<?xml version="1.0" encoding="utf-8"?>
<configuration>
...  
    <add key="FileUploadFolder" value="<#= this.FileUpload #>" /> 
...
</configuration>
<#+ 
   string FileUpload="\\\\server\\folder";
#>

そして、ここにスクリーンショットがあります

4

2 に答える 2

6

ここでも同じ問題。.ttファイル内の行を置き換えることで回避しました

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

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

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

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

<#@ template debug="true" hostSpecific="true" #>
<#@ output extension= ".config" #>  
<# WriteLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); #>
<configuration>
...  
    <add key="FileUploadFolder" value="<#= this.FileUpload #>" /> 
...
</configuration>
<#+ 
    string FileUpload="\\\\server\\folder";
#>
于 2012-07-03T13:52:16.487 に答える
0

ここで起こっていることは、VSのXml言語サービスが誤ってT4ファイルをXmlファイルとして識別しているため、多くの誤検知エラーメッセージが表示されていることです。

T4ファイルを無視するように強制する回避策があるかどうかを調べています。Microsoft Connectにバグを記録できれば、それは役に立ちます。

于 2012-07-02T19:29:26.513 に答える