System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path))
因此,这是一种解决方法,即在不锁定本文中的二进制文件的情况下,无法使用 T4 反映或读取项目或解决方案中的其他文件。评论暗示内存问题。
评论谈到了不卸载的缺点,这会在你工作时被垃圾收集吗?
如果您 T4 使用此代码生成某些内容,更改它工作的文件或 T4 然后重新运行 T4,这会是内存泄漏吗?
System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path))
因此,这是一种解决方法,即在不锁定本文中的二进制文件的情况下,无法使用 T4 反映或读取项目或解决方案中的其他文件。评论暗示内存问题。
评论谈到了不卸载的缺点,这会在你工作时被垃圾收集吗?
如果您 T4 使用此代码生成某些内容,更改它工作的文件或 T4 然后重新运行 T4,这会是内存泄漏吗?
这取决于组件的数量和大小。T4在25次运行后回收了代码生成AppDomain,所以可能不会有问题。更多信息:http ://www.olegsych.com/2008/05/t4-architecture/
我认为这样做的最好方法是制作程序集的卷影副本
谢谢 Muse VSExtensions