2012-02-03 146 views
5

假设我有一个C#类的项目(比如说ProjectA),并且这些类不引用项目之外的任何类型和System.dll程序集的类型。 ProjectA中的类可能具有方法,属性,字段和自定义属性。类也可能存在于不同的名称空间中。如何使用T4将类从一个项目转换为另一个项目?

如何使用T4将所有这些类(包括方法,属性,字段和自定义属性)从ProjectA转换为另一个项目(比如ProjectB)中的相关集。

+0

在这种情况下,我通常会添加链接到代码文件,而不是克隆它们。如果你确信你想要一个副本,你可以在你的T4中使用'File.Copy'操作。 – Douglas 2012-02-03 23:25:02

+0

是什么让你认为T4是这份工作的正确工具? – 2012-02-03 23:26:21

+0

是否要从* ProjectA *保留名称空间或将它们更改为其他(* ProjectB *)名称空间? – Matej 2012-02-03 23:27:46

回答

2

沃纳,你当然可以做到这一点。一个好的技术是使用VS的代码模型。 有一些指针,在这里的例子:http://blogs.msdn.com/b/garethj/archive/2009/09/25/dte-and-t4-better-together.aspx

你会使用代码模型读取作为元数据类无需编译,然后生成使用元数据作为输入。您可能需要查看Oleg Sych的T4 Toolbox(http://t4toolbox.codeplex.com)以将输出投影到二级项目中。

+2

虽然还没有最终确定,但我会考虑Roslyn:http://www.microsoft.com/download/en/details.aspx?id=27746 – FuleSnabel 2012-02-05 19:18:30

+0

@GarethJ,谢谢你的建议。我搜索了EnvDTE和T4,并找到了几个例子。很明显,我的工作对我来说很不利。 – bloudraak 2012-02-06 20:26:08

+0

@FuleSnabel我开始和Roslyn一起玩,看起来这很适合这种类型的工作,而且工作量少得多。 – bloudraak 2012-02-10 08:36:57

相关问题