【问题标题】:T4 Template place using outside of namespace使用命名空间之外的 T4 模板位置
【发布时间】:2017-01-10 13:54:09
【问题描述】:

我尝试使用 t4 模板引擎,但它自动在命名空间块内包含 using 指令。它找不到System 命名空间,因为它在我们自己的MyProject.System 命名空间设置的父命名空间内搜索。

文件夹/命名空间结构

  • 我的文件夹
  • 其他文件夹
  • 系统

模板文件

<#@ template language="C#" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<div>Test</div>

CS 文件

namespace MyProject.MyFolder.Templates
{
    using System;
    using System.Linq;
    using System.Text;
    using System.Collections.Generic;
}

错误

MyProject.System 中找不到命名空间Linq

问题

如何强制 t4 将 using 放在命名空间块之外?

【问题讨论】:

  • 您能否包含创建该输出的模板?
  • 我添加了它。现在我刚刚重命名了我们的 System 命名空间,它解决了这个问题。

标签: c# template-engine t4


【解决方案1】:

您可以像这样以非相对方式引用System.Linq

using global::System.Linq;

如果这是一种有用的方法。

【讨论】:

  • c#代码是模板自己生成的。我刚刚重命名了我们的 System 命名空间。
  • 你试过&lt;#@ import namespace="global::System" #&gt;吗?有兴趣知道它是否会起作用。
猜你喜欢
  • 1970-01-01
  • 2014-07-08
  • 2012-02-18
  • 2011-01-03
  • 2014-11-14
  • 2011-11-01
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
相关资源
最近更新 更多