【问题标题】:Automatically getting all assembly references in T4自动获取 T4 中的所有程序集引用
【发布时间】:2011-01-26 06:55:12
【问题描述】:

是否有可能有一个 T4 模板自动获取父项目的所有程序集引用(及其依赖项)?

我看到的所有示例都使用 或 来手动定义引用,因此例如我最终不得不在项目和模板中引用 System.Core。我想避免这种重复:我只想在项目中定义引用,而不是模板。

这还应该添加对项目本身的引用,允许引用模板中的其他程序集,并在必要时进行卷影复制以避免程序集锁定。

似乎this was possible before VS2010,是否可以重新实现/恢复该行为?

【问题讨论】:

    标签: .net t4


    【解决方案1】:

    T4 确实在 VS2010 之前拿起了项目依赖项。我们特意选择将设计时引用与运行时引用分开,以便分离这些问题并更好地支持在模板中使用 .Net 4.0,即使它们被用于为 .Net 2.0 项目生成代码。

    您可以通过制作一个自定义指令处理器来执行类似于 VS2010 之前的操作,该处理器使用主机作为服务提供者来获取 DTE,然后遍历解决方案/项目以查找它们的引用。不过,这将是相当多的工作。

    我很想知道是什么将您的项目的依赖项与您的模板所需的依赖项联系起来。例如,使用 WinForms 的项目通常不需要在其模板代码中使用 WinForms。 System.Core 之类的基础通常在两者中都有,但共享集通常看起来并不大,因此重复不是一个大问题。

    你有一个大的共享集吗?

    【讨论】:

    • 我正在尝试使用 T4 构建一个轻量级的 DSL(文本类型,而不是 SDK DSL 工具中使用的图形类型),我必须分析和操作正在使用的表达式的类型(可以是项目中引用的任何类型),所以是的,它是一个大型共享集...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多