在T4中使用System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path))的后果是什么?

时间:2010-04-08 15:53:00

标签: reflection memory-leaks code-generation t4 vsx

System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path)) 

因此,如果不使用T4来反映或读取项目或解决方案中的其他文件而不锁定此post中的二进制文件,这是一种解决方法。这些评论意味着记忆问题。

评论谈到了一个不卸载的缺点,你在工作时会收集垃圾吗?

如果T4使用此代码生成内容,更改其处理的文件或T4然后重新运行T4,那会是内存泄漏吗?

2 个答案:

答案 0 :(得分:2)

这取决于程序集的数量和大小。 T4在25次运行后回收代码生成AppDomain,因此它可能不是问题。更多信息:http://www.olegsych.com/2008/05/t4-architecture/

答案 1 :(得分:0)

我认为最好的方法是制作程序集的卷影副本

谢谢 Muse VSExtensions