将T4与.NET Core 2.0一起使用并引用模板

时间:2017-10-16 08:34:36

标签: .net-core t4

我尝试在.NET Core 2.0应用程序项目中使用T4,但似乎T4无法识别包含的命名空间。例如,在安装Microsoft.AspNetCore.All包并具有以下代码之后:

<#@ import namespace="Microsoft.Extensions.Configuration" #>

<#+ 

public class ConfigurationHelper
{

    public string ReadConfig(){

        var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("Configuration\\CodeGenerationConfig.json");

            IConfigurationRoot  Configuration = builder.Build();

            return Configuration["ConnectionString:Server"];
        }
}

#>

我收到了错误:

  

找不到类型或命名空间名称“IConfigurationRoot”   (您是否缺少using指令或程序集引用?)

即使我尝试使用汇编指令:

  

&lt;#@ assembly name =“C:\ Program   文件\ DOTNET \存储\ 64 \ netcoreapp2.0 \ microsoft.extensions.configuration \ 2.0.0 \ lib中\ netstandard2.0 \ Microsoft.Extensions.Configuration.dll“

     

&GT;

但发生了以下错误:

  

System.IO.FileLoadException:无法加载文件或程序集   “文件:/// C:\ PROGRAM   文件\ DOTNET \店\ 64 \ netcoreapp2.0 \ microsoft.extensions.configuration \ 2.0.0 \ LIB \ netstandard2.0 \ Microsoft.Extensions.Configuration.dll”   或其中一个依赖项。强名称签名不可能   验证。组件可能已经被篡改,或者是延迟   已签名但未使用正确的私钥完全签名。 (例外   来自HRESULT:0x80131045)

所以问题是我如何从T4模板中引用.NET Core包?

P.S:我试过Scripty,但它还不支持.NET Core。

1 个答案:

答案 0 :(得分:1)

更新

Visual Studio 2017和Xamarin Studio现在支持在设计时处理* .tt文件

但如果要在dotnet核心中处理T4模板,那么https://github.com/ZeekoZhu/TextTemplatingCore可能仍然有用(netstandard2.0) 在IDE之外的项目(例如在Linux或使用Visual Studio代码的macOS中)