在 Rider 的 T4 模板中使用 net5.0
Using net5.0 in T4 templates in Rider
我对 netstandard
、netframework
、netX
之间的兼容性以及单声道如何融入图片感到有点困惑...
我知道 Rider 的 T4 引擎 运行 是单声道的,但这是否意味着我不能在我的 T4 模板中使用 net5.0
程序集?
目前,我有一个 net5.0
项目,引用 net5.0
个 nuget 程序集。
在我的 T4 模板中,我引用了 bin/Debug/net5.0
中的程序集 DLLs `<@ assembly name="...">
当我通过 Mono.TextTemplating.TemplateGenerator.TemplateGenerator
在 net5.0
控制台应用程序中 运行 T4 模板时,模板就可以工作了。
但是,如果我在解决方案资源管理器中右键单击一个模板,然后 select 'Run Template',我会得到一个错误列表,即缺少核心 System.* 库,例如
Generate.tt(21, 25): [CS0012] The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
这是 Rider 中的错误吗?
由于实现细节,Rider 会编译针对 .NET Framework 版本的 T4 文件,这就是它在文件引用 net5.0
程序集时出现问题的原因。据我所知,我在 Mono.TextTemplating
中看到的是,它们针对的是它们在其中启动的运行时。为了解决您的问题,我建议尝试将 Mono.TextTemplating
作为命令行工具 - 它可能能够编译带有 net5.0
引用的文件。要将该外部工具集成到 Rider 中,您可以转到 File > Settings > Tools > Custom Tools
、禁用 Bundled T4 Template Executor
并为 Mono.TextTemplating
CLT 添加自定义工具。
回答你的问题:是的,它可能可以称为错误
我对 netstandard
、netframework
、netX
之间的兼容性以及单声道如何融入图片感到有点困惑...
我知道 Rider 的 T4 引擎 运行 是单声道的,但这是否意味着我不能在我的 T4 模板中使用 net5.0
程序集?
目前,我有一个 net5.0
项目,引用 net5.0
个 nuget 程序集。
在我的 T4 模板中,我引用了 bin/Debug/net5.0
中的程序集 DLLs `<@ assembly name="...">
当我通过 Mono.TextTemplating.TemplateGenerator.TemplateGenerator
在 net5.0
控制台应用程序中 运行 T4 模板时,模板就可以工作了。
但是,如果我在解决方案资源管理器中右键单击一个模板,然后 select 'Run Template',我会得到一个错误列表,即缺少核心 System.* 库,例如
Generate.tt(21, 25): [CS0012] The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
这是 Rider 中的错误吗?
由于实现细节,Rider 会编译针对 .NET Framework 版本的 T4 文件,这就是它在文件引用 net5.0
程序集时出现问题的原因。据我所知,我在 Mono.TextTemplating
中看到的是,它们针对的是它们在其中启动的运行时。为了解决您的问题,我建议尝试将 Mono.TextTemplating
作为命令行工具 - 它可能能够编译带有 net5.0
引用的文件。要将该外部工具集成到 Rider 中,您可以转到 File > Settings > Tools > Custom Tools
、禁用 Bundled T4 Template Executor
并为 Mono.TextTemplating
CLT 添加自定义工具。
回答你的问题:是的,它可能可以称为错误