【问题标题】:Assembly with T4 templates for use in other Solutions?使用 T4 模板组装以用于其他解决方案?
【发布时间】:2010-06-04 12:56:58
【问题描述】:

我刚刚创建了 T4 模板来为我的 ViewModel 类自动生成属性实现(请参阅此处:Automatic INotifyPropertyChanged Implementation through T4 code generation?)。

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

因此,例如解决方案包含三个项目:T4Generation、SomeProjectWithViewModels、AnotherProjectWithViewModels。

然后在 T4Generation 中调用 T4 模板时,它会查看解决方案中的所有项目并找到所有 ViewModel 类并生成一个 C# 文件,其中包含相应项目中特定 ViewModel 的属性实现。

例子:

“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”,并在 SomeApplication 中引用“T4Generation.dll”,并在 SomeApplication 的构建过程中生成 T4将被调用。

这可能吗?

【问题讨论】:

    标签: c# t4


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-13
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    相关资源
    最近更新 更多