阅读 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 文件中添加带有 &lt;#@ template language="C#" #&gt; &lt;#@ import namespace="System.CodeDom" #&gt;&lt;#@ assembly name="System.CodeDom" #&gt; 的“缺少”程序集。

【问题讨论】:

【参考方案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 的子类,则不会重新加载视图内容。这是一个错误还是我错过了啥?

理解 Android 元视口缩放:我错过了啥?

jQuery悬停功能 - 我错过了啥?

Linux SUID 权限位行为 - 我错过了啥?

Tomcat JSP 似乎是串行运行(而不是并行运行)——我错过了啥?

我的 Django 网站正在加载我的静态 (CSS) 文件,但它们没有显示出来。我错过了啥或做错了啥?