我正在尝试使用Robert Koritnik's t4模板生成枚举。
这些不是常规枚举,我的公司正在使用偶尔在java中使用的TypeSafeEnum
模式。它基本上只是一个带有值的类的集合。这并不重要,只是要注意TypeSafeEnum
基类与我的EDMX和模板文件位于不同的项目中。
我也无法在我的数据库项目中引用枚举项目,因为它会创建一个循环引用。
因此,当我生成枚举类时,我引用基类但它不存在。
我的问题是:
有没有办法将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>
{
答案 0 :(得分:3)
将您的.tt
文件移动到您希望生成文件的项目:
- Solution "MySolution"
|-> Project "DBProject"
| |-> MyModel.edmx
|
|-> Project "EnumsProject"
|-> References
| |-> DBProject.dll
|
|-> MyT4Template.tt
|-> Generatedfiles.cs
然后确保为T4模板中的EDMX
文件提供正确的路径,以便它可以正确读取它:
var edmxPath = "..\DBProject\MyModel.Edmx";