使用t4模板时,从解决方案获取所有程序集,而不是当前正在执行的程序集

本文关键字:程序集 执行 t4 获取 解决方案 使用 | 更新日期: 2023-09-27 18:17:06

我使用T4模板尝试输出我的解决方案中使用的所有程序集。但是,在.tt文件中,所有加载的程序集与父项目或解决方案无关,因为我认为这些都是构建管理器所需的所有程序集。

当解析.tt文件时,我想遍历当前解决方案中的所有程序集。有什么办法可以做到这一点吗?

使用t4模板时,从解决方案获取所有程序集,而不是当前正在执行的程序集

不幸的是,从T4内反映当前解决方案中的程序集将不起作用。这是因为程序集一旦加载,就不能卸载,除非卸载整个AppDomain。在实践中,这意味着在第一次反射程序集之后,程序集将被写锁定,并且您只能通过退出Visual Studio来解锁它们。

一种可能的解决方法是使用Introspection而不是reflection,如下所述(包括示例代码)。