T4模板在命名空间之外的位置放置

3

我尝试使用t4模板引擎,但它自动将using指令包含在命名空间块内。由于它在父命名空间中搜索,因此无法找到System命名空间,而我们自己的MyProject.System命名空间则被设置。

文件夹/命名空间结构

  • MyFolder
  • OtherFolder
  • 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放在命名空间块之外?


你能包含创建该输出的模板吗? - rmc00
我已经添加了它。目前我只是重命名了我们的“System”命名空间,这解决了问题。 - djmj
1个回答

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

using global::System.Linq;

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


C#代码是由模板自动生成的。我只是现在将我们的“System”命名空间重命名了。 - djmj
你试过 <#@ import namespace="global::System" #> 吗?很想知道它是否有效。 - Steve Cooper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接