C# T4生成的代码需要访问不同的命名空间/项目

C# T4生成的代码需要访问不同的命名空间/项目,c#,enums,t4,C#,Enums,T4,我正在尝试使用t4模板生成枚举 这些不是常规枚举,我的公司正在使用java中偶尔使用的TypeSafeEnum模式。它基本上只是一个具有值的类的集合。这并不重要,但需要注意的是,TypeSafeEnum基类与我的EDMX和模板文件位于不同的项目中 我也不能在我的DB项目中引用enum项目,因为它会创建循环引用 因此,当我生成枚举类时,我引用了基类,但它不存在 那么,我的问题是: 是否有办法将T4生成的代码复制到正确的项目中 或者是一种更好的生成代码的方法,这样我就可以访问这两个名称空间了 以下是

我正在尝试使用t4模板生成枚举

这些不是常规枚举,我的公司正在使用java中偶尔使用的
TypeSafeEnum
模式。它基本上只是一个具有值的类的集合。这并不重要,但需要注意的是,
TypeSafeEnum
基类与我的EDMX和模板文件位于不同的项目中

我也不能在我的DB项目中引用enum项目,因为它会创建循环引用

因此,当我生成枚举类时,我引用了基类,但它不存在

那么,我的问题是:

是否有办法将T4生成的代码复制到正确的项目中

或者是一种更好的生成代码的方法,这样我就可以访问这两个名称空间了

以下是我生成的代码片段:

using System;
using System.CodeDom.Compiler;
using xxxxxx.Core.Enums.BaseClasses;   //<--- Isnt referenced

namespace xxxxxx.Core.Enums
{
    /// <summary>
    /// InventoryAdjustmentType auto generated enumeration
    /// </summary>
    [GeneratedCode("TextTemplatingFileGenerator", "10")]
                                          //vvvvvvvv---- base class not referenced  
    public class InventoryAdjustmentType : TypeSafeEnum<InventoryAdjustmentType, byte>
    {
使用系统;
使用System.CodeDom.Compiler;

使用xxxxxx.Core.Enums.BaseClasses// 将
.tt
文件移动到您希望生成的文件所在的项目:

- Solution "MySolution"
   |-> Project "DBProject"
   |      |-> MyModel.edmx
   |
   |-> Project "EnumsProject"
          |-> References
          |      |-> DBProject.dll
          |
          |-> MyT4Template.tt
                 |-> Generatedfiles.cs
然后确保您为T4模板中的
EDMX
文件提供了正确的路径,以便它能够正确读取:

var edmxPath = "..\DBProject\MyModel.Edmx";