gpt4 book ai didi

c# - 卸载 CodeDom 编译的程序集

转载 作者:可可西里 更新时间:2023-11-01 09:15:14 24 4
gpt4 key购买 nike

我有一些在运行时编译的 C# 代码(我们称它为“脚本”)。它在我用来访问其功能的主程序中使用了一个接口(interface)。编译完成后,我有 CompilerResults.CompiledAssembly,在这种情况下,我可以 CreateInstance(Type)

一旦我使用完脚本,我想完全卸载。据我了解,如果我创建一个单独的应用程序域,我只能这样做: Loading DLLs into a separate AppDomain

我有一些关于我的实现的问题:

  1. 如果我有多个脚本要编译并想独立卸载它们,我是否必须为每个脚本创建单独的应用程序域?
  2. 我应该使用哪些应用域名? GUID 是个好主意吗?是否有任何我应该避免的名称可能会发生冲突?
  3. 如果程序集位于单独的应用程序域中,它在访问主程序中的界面时是否会遇到任何问题?我目前正在编译之前执行 ReferencedAssemblies.Add(typeof(Interface).Assembly.Location)
  4. 我可以使用 CompilerParameters GenerateInMemory=true,还是必须将它保存在某个地方?

最佳答案

按顺序回答:

  1. 是的,如果您想独立卸载它们,您将需要单独的应用域。
  2. 随便用。如果您可以将它识别回脚本,它可能会帮助您进行调试,但对于正在执行的线程来说更是如此。
  3. 只要您将域设置的基本路径设置为您自己的即可。

    AppDomainSetup.ApplicationBase = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;

  4. 不,您不需要保存它,这听起来对您没有好处。

关于c# - 卸载 CodeDom 编译的程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1462923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com