0

关于这个问题的一切都与 .NET 框架 4.8 或更低版本有关,除了引用的文章,其中包含有关不同版本的 .NET 的混合信息。

我刚刚阅读了这篇关于程序集可卸载性的文章,它提出了一个我还没有找到答案的问题......

我使用CSharpScript.Run(code, scriptOptions);将 C# 代码脚本(~.csx 文本但不在文件中,只是在内存中)直接运行到我自己的应用程序中。有点像 Excel 2003 中的 VBA。代码应该加载到我的主 AppDomain 中,因为我可以访问我的应用程序中的所有内容。

文章中得知,我们无法卸载加载在同一个 AppDomain 中的 .Net framework 4.8 中的程序集。调用CSharpScript.Run意味着将代码执行到我的应用程序主 AppDomain 中,因为我可以从脚本访问我的所有代码。然后,我想知道是否所有已经编译并运行到我的应用程序中的宏都留在内存中?

如果是,是否在每次调用时将每个脚本添加到运行 AppDomain 中CSharpScript.Run?它是否会在每次脚本执行时增加我的应用程序在内存中的占用空间?

如果否,则应卸载已编译的脚本代码。如果在主 AppDomain 中加载了 .NET Framework 4.8 中的代码,如何卸载它?

4

0 回答 0