【发布时间】:2012-12-27 09:38:42
【问题描述】:
我使用 CSharpCodeProvider 编译并在内存中生成一个新的命名空间,仅供临时使用。但是这个命名空间应该在一段时间后从内存中删除,以允许下一个生成的代码覆盖所有生成的类和方法的相同标识符。
【问题讨论】:
-
看看AppDomains你可以卸载它们...
标签: c# .net memory csharpcodeprovider
我使用 CSharpCodeProvider 编译并在内存中生成一个新的命名空间,仅供临时使用。但是这个命名空间应该在一段时间后从内存中删除,以允许下一个生成的代码覆盖所有生成的类和方法的相同标识符。
【问题讨论】:
标签: c# .net memory csharpcodeprovider
只有一种方法可以卸载已加载的类型:如果它是 collectible assembly 的一部分。
但可收藏程序集只能通过 Reflection.Emit 创建,而不能通过 CSharpCodeProvider 创建。正因为如此,我不确定使用收藏组件是否适合您。如果没有,您将需要一些其他选项(例如卸载 AppDomain)。
【讨论】:
没办法。类卸载仅在卸载 AppDomain 时发生 - 请注意。
最好的办法是在子应用程序域中进行所有代码生成(将是相同的过程),但这并非易事(子应用程序域需要通过远程处理所有可访问对象的代理)。
【讨论】:
【讨论】: