【发布时间】:2021-12-13 08:32:03
【问题描述】:
我们正在对大量(数千个)C# 项目进行广泛的代码分析。但是尽管我们没有调用 Solution.Emit() 方法,程序集仍然被加载到内存中。 还有其他方法也会导致这种行为吗?是否有可能在不将程序集加载到内存中的情况下创建编译并检索其符号? 希望我们能以某种方式避免创建单独的应用程序域并卸载它们。
【问题讨论】:
-
您的代码中是否有任何类实现
IDisposable?如果有,请检查您是如何处理资源的。 -
据我所知,已经加载的程序集无法卸载,因此首先我们需要防止正在加载程序集。
-
本身不是,但您应该能够完成创建一个新的 AppDomain。检查我的答案,如果你觉得有用,请标记它。请注意,由于缺少示例 minimal reproducible example,我只能为您提供一些应该能够指导您的通用代码。
标签: c# roslyn roslyn-code-analysis microsoft.codeanalysis