我使用CSharpCodeProvider在内存中编译和生成一个新的命名空间,仅供临时使用。但是,应该在一段时间后从内存中删除此命名空间,以便允许下一个生成的代码覆盖所有生成的类和方法的相同标识符。
答案 0 :(得分:1)
没办法。只卸载类卸载 - 注意 - 卸载AppDomain时。
您最好的选择是在子应用程序域中执行所有代码生成(将是相同的过程),但这不会是微不足道的(子应用程序域需要通过远程处理来获取所有可访问对象的代理)。
答案 1 :(得分:1)
加载类型只能通过一种方式卸载:如果它是collectible assembly的一部分。
但是可收藏的程序集只能通过Reflection.Emit创建,而不能通过CSharpCodeProvider创建。因此,我不确定使用收藏品装配是否适合您。如果没有,您将需要一些其他选项(如卸载AppDomains)。
答案 2 :(得分:0)