在 T4 中使用 System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path)) 有何后果?
System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path))
因此,这是一种解决方法,无法使用 T4 反映或读取项目或解决方案中的其他文件,而不锁定此 帖子。评论暗示内存问题。
评论谈到了无卸载的缺点,这会在您工作时被垃圾收集吗?
如果您 T4 使用此代码生成某些内容,更改它工作的文件或 T4,然后重新运行 T4,这会是内存泄漏吗?
System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path))
So this is a work around to not being able to use T4 to reflect or read other files in the project or solution without locking the binaries from this post. The comments imply a memory issue.
The comments talk about a no-unloading downside, would this be garbage collected while you are working?
would it be a memory leak if you T4 generate something using this code, change a file it worked off of or the T4 and then the T4 is re-run?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这取决于组件的数量和尺寸。 T4 在运行 25 次后回收代码生成 AppDomain,因此可能不是问题。更多信息请参见:http://www.olegsych.com/2008/05/t4-架构/
It depends on the number and size of your assemblies. T4 recycles the code generation AppDomain after 25 runs, so it may not be a problem. More here: http://www.olegsych.com/2008/05/t4-architecture/
我认为最好的方法是制作程序集的卷影副本
谢谢
Muse VS 扩展
I think that the best way of doing this is to make a shadow copy of the assembly
Thank you
Muse VSExtensions