gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:36:25 24 4
gpt4 key购买 nike

我正在尝试使用 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>
{

最佳答案

将您的 .tt 文件移动到您希望生成的文件所在的项目中:

- Solution "MySolution"
|-> Project "DBProject"
| |-> MyModel.edmx
|
|-> Project "EnumsProject"
|-> References
| |-> DBProject.dll
|
|-> MyT4Template.tt
|-> Generatedfiles.cs

然后确保您在 T4 模板中提供了 EDMX 文件的正确路径,以便它可以正确读取它:

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

关于c# - T4 生成的代码需要访问不同的命名空间/项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22205508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com