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