我在阅读 T4 文件内容时缺少什么?

Fig*_*ann 6 c# t4

我迫切需要在 C# 中使用 T4 生成 HTML 输出。

\n

我正在使用 Runtime-T4-Files 并选择“TextTemplatedFilePreprocessor”而不是“TextTemplatedFileGenerator”作为选项。

\n

我的“MyTemplate.tt”文件包含:

\n
<#@ template language="C#" #>\n<#@ assembly name="System.Core" #>\n<#@ import namespace="System.Linq" #>\n<#@ import namespace="System.Text" #>\n<#@ import namespace="System.Collections.Generic" #>\n\nfoo\n
Run Code Online (Sandbox Code Playgroud)\n

我的“Program.cs”文件包含:

\n
using System;\n\nnamespace T4MS\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            string output = new MyTemplate().TransformText();\n            Console.WriteLine(output);\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我错过了什么,发生以下错误:

\n

Schweregrad Code Beschreibung Projekt Datei Zeile Unterdr\xc3\xbcckungszustand\nFehler CS1069 Der Typename“CompilerErrorCollection”konnte nicht im Namespace“System.CodeDom.Compiler”gefunden werden。Dieser Typ 编写了一个程序集“System.CodeDom,Version=4.0.3.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”。Sie sollten einen Verweis auf die Assembly hinzuf\xc3\xbcgen. T4MS C:\\Users\\figaro\\source\\repos\\T4MS\\T4MS\\MyTemplate.cs 47 Aktiv

\n

基本上这个错误告诉我添加一个程序集引用“System.CodeDom”,由我自动生成的“MyTemplate.cs”文件抛出。

\n

所以我尝试在我的 tt 文件中<#@ template language="C#" #> <#@ import namespace="System.CodeDom" #>添加“缺少”程序集。<#@ assembly name="System.CodeDom" #>

\n

小智 9

您需要安装System.CodeDomNuGet 包: https: //www.nuget.org/packages/System.CodeDom/


Ala*_*anK 0

第一行对我有用。我不记得我在哪里读到它,但就我而言,正是它langversion导致了问题 - 没有高于 7.3 的版本可以工作,但那是一两年前的事了

<#@ template debug="false" hostspecific="true" language="C#" compilerOptions="/langversion:7.3" #>
Run Code Online (Sandbox Code Playgroud)