代码之家  ›  专栏  ›  技术社区  ›  chrischu

与T4模板组装以用于其他解决方案?

t4 c#
  •  1
  • chrischu  · 技术社区  · 15 年前

    我刚刚完成创建T4模板,以便为我的ViewModel类自动生成属性实现(请参见以下内容: Automatic INotifyPropertyChanged Implementation through T4 code generation? )

    目前,我需要让项目在我想要生成属性实现的解决方案中保存“.tt”文件。

    例如,解决方案包含三个项目:t4生成、一些带有视图模型的项目、另一个带有视图模型的项目。

    然后,当在t4generation中调用t4模板时,它会查看解决方案中的所有项目,并查找所有的ViewModel类,并生成一个包含各个项目中特定ViewModel的属性实现的C文件。

    例子:

    “someprojectwithviewmodels.someviewmodel.cs”

    public partial class SomeViewModel : BaseViewModel
    {
        private string p_SomeProperty;
    }
    

    生成文件“someprojectwithviewmodels.someviewmodel.properties.cs”

    public partial class SomeViewModel
    {
        public string SomeProperty
        {
            get { ... }
            set { ... }
        }
    }
    

    我现在的问题是,是否有可能创建一个程序集(即“t4generation.dll”),该程序集可以在任何解决方案中引用,从而使宿主解决方案能够以某种方式调用代码生成过程。

    例如,我将使用项目“someapplication.exe”、“someclasslibrary.dll”启动一个新的解决方案“somesolution.sln”,在某些应用程序中,我将引用“t4 generation.dll”,在某些应用程序的构建过程中,将调用t4生成。

    这有可能吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   mattmc3    14 年前

    您使用的是Visual Studio 2010吗?如果是这样,我建议您使用“预处理的模板”来完成您的工作。预处理模板生成生成代码的生成器类,而不是直接生成代码。因此,使用这些由T4模板生成的生成器类,您可以生成一个T4Generation.exe控制台应用程序,该应用程序作为预编译命令从项目中调用。传递到项目的路径中,生成器应该完成其余的工作。这将在任何项目中重复使用。