从内存中释放CSharpCodeProvider生成的代码

时间:2012-12-27 09:38:42

标签: c# .net memory csharpcodeprovider

我使用CSharpCodeProvider在内存中编译和生成一个新的命名空间,仅供临时使用。但是,应该在一段时间后从内存中删除此命名空间,以便允许下一个生成的代码覆盖所有生成的类和方法的相同标识符。

3 个答案:

答案 0 :(得分:1)

没办法。只卸载类卸载 - 注意 - 卸载AppDomain时。

您最好的选择是在子应用程序域中执行所有代码生成(将是相同的过程),但这不会是微不足道的(子应用程序域需要通过远程处理来获取所有可访问对象的代理)。

答案 1 :(得分:1)

加载类型只能通过一种方式卸载:如果它是collectible assembly的一部分。

但是可收藏的程序集只能通过Reflection.Emit创建,而不能通过CSharpCodeProvider创建。因此,我不确定使用收藏品装配是否适合您。如果没有,您将需要一些其他选项(如卸载AppDomains)。

答案 2 :(得分:0)