阅读 T4 文件的内容我错过了啥?
Posted
技术标签:
【中文标题】阅读 T4 文件的内容我错过了啥?【英文标题】:What am I missing to read content of T4-File?阅读 T4 文件的内容我错过了什么? 【发布时间】:2021-08-17 10:56:12 【问题描述】:我迫切需要在 C# 中使用 T4 生成 html 输出。
我正在使用 Runtime-T4-Files 并选择“TextTemplatingFilePreprocessor”而不是“TextTemplatingFileGenerator”作为选项。
我的“MyTemplate.tt”-文件包含:
<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
foo
我的“Program.cs”-文件包含:
using System;
namespace T4MS
class Program
static void Main(string[] args)
string output = new MyTemplate().TransformText();
Console.WriteLine(output);
发生以下错误我错过了什么:
Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand Fehler CS1069 Der Typname "CompilerErrorCollection" konnte nicht im Namespace "System.CodeDom.Compiler" gefunden werden。 Dieser Typ wurde 一个程序集“System.CodeDom,版本=4.0.3.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”weitergeleitet。 Sie sollten einen Verweis auf die Assembly hinzufügen。 T4MS C:\Users\figaro\source\repos\T4MS\T4MS\MyTemplate.cs 47 Aktiv
基本上这个错误告诉我添加一个程序集引用“System.CodeDom”,由我的自动生成的“MyTemplate.cs”-File 抛出。
所以我尝试在我的 tt 文件中添加带有 <#@ template language="C#" #> <#@ import namespace="System.CodeDom" #>
或 <#@ assembly name="System.CodeDom" #>
的“缺少”程序集。
【问题讨论】:
【参考方案1】:第一行对我有用。我不记得我在哪里读到的,但在我的情况下是 langversion
导致了问题 - 没有高于 7.3 的工作,但那是一两年前的事了
<#@ template debug="false" hostspecific="true" language="C#" compilerOptions="/langversion:7.3" #>
【讨论】:
对不起,这对我没有用。我还尝试寻找其他编译器选项。 @FigaroHartmann 您正在运行什么版本的 Visual Studio、什么版本的 .Net、支持的 C# 版本以及您不使用 TextTemplatingFileGenerator 的原因是什么? (我的经验基于 TextTemplatingFileGenerator。)使用这些详细信息更新您的问题是个好主意。 我的 Visual Studio 版本是 2019,我的 .NET 版本是 3.1。我是 C# 新手,所以我不知道如何查找我的版本,但我会在这里更新它们,一旦我找到它们。关于以下链接,我选择了运行时 T4 文本模板以创建 HTML 输出:docs.microsoft.com/en-us/visualstudio/modeling/…【参考方案2】:您需要安装System.CodeDom
NuGet 包:
https://www.nuget.org/packages/System.CodeDom/
【讨论】:
以上是关于阅读 T4 文件的内容我错过了啥?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI:如果 @ObservedObject 是 UIViewController 的子类,则不会重新加载视图内容。这是一个错误还是我错过了啥?