C# T4模板作为生成类的库(DLL)的一部分

C# T4模板作为生成类的库(DLL)的一部分,c#,.net,dll,t4,C#,.net,Dll,T4,我想编写一个模板,根据已经存在的类的某些属性的某些属性生成类 我很确定T4模板允许我这样做,但我想做的是在我的类库中与T4模板一起定义这些属性,这样当您引用我的DLL并在代码中使用这些属性时,类仍然会自动生成(不管它们是作为DLL程序集的一部分生成的(这甚至可能不可能),还是作为引用我的DLL的程序集的一部分生成的) 我能做的就是使用预编译模板(或者只是一些将类代码生成为字符串的函数)然后在项目中创建一个引用我的DLL的模板,并从模板内部调用生成器函数。我之所以不想这样做,是因为它会强制用户在其

我想编写一个模板,根据已经存在的类的某些属性的某些属性生成类

我很确定T4模板允许我这样做,但我想做的是在我的类库中与T4模板一起定义这些属性,这样当您引用我的DLL并在代码中使用这些属性时,类仍然会自动生成(不管它们是作为DLL程序集的一部分生成的(这甚至可能不可能),还是作为引用我的DLL的程序集的一部分生成的)


我能做的就是使用预编译模板(或者只是一些将类代码生成为字符串的函数)然后在项目中创建一个引用我的DLL的模板,并从模板内部调用生成器函数。我之所以不想这样做,是因为它会强制用户在其项目中手动创建该模板。

您可以使用TextTemplatingFilePreprocess generator创建T4模板。在这种情况下,您的T4 file将使用公共方法TransformText()生成C#类,另一个人将调用此方法生成文件。
生成的类是一个部分类,因此您可以将一些参数作为属性添加到其中,以便自定义生成过程。

那么,我最好创建自己的类生成方法。在这种情况下,据我所知,模板只帮助我生成这些字符串。它们在实际生成类方面没有任何作用。我正在查看为类生成代码并自动将该类添加到构建过程中,而无需我的库的用户手动处理任何模板。在这种情况下,更简单的方法是将tt文件传递给其他开发人员(就像MS使用其最新EF6所做的那样)。否则,你必须创建自己的VS扩展。这是可能的,但非常困难。如果没有其他方法,那么我想这就是我必须要做的。也许你可以分享你最终得到的解决方案?我没有找到我喜欢的解决方案。但现在nuget包很常见,这可能是最好的解决方案。