我有一些 C# 代码(我们称之为“脚本”)我在运行时编译。它在我的主程序中使用了一个接口,我用来访问它的功能。一旦编译完成,CompilerResults.CompiledAssembly
在这种情况下我可以CreateInstance(Type)
。
完成使用脚本后,我想完全卸载。据我了解,如果我创建一个单独的应用程序域,我只能这样做: Loading DLLs into a separate AppDomain
我有一些特定于我的实施的问题:
- 如果我有多个脚本要编译并想独立卸载它们,我是否必须为每个脚本创建单独的应用程序域?
- 我应该使用哪些应用域名?GUID 是个好主意吗?有没有我应该避免的可能冲突的名字?
- 如果程序集位于单独的应用程序域中,访问主程序中的界面是否有任何问题?我目前
ReferencedAssemblies.Add(typeof(Interface).Assembly.Location)
在编译之前正在做。 - 我可以使用
CompilerParameters GenerateInMemory=true
,还是必须将其保存在某个地方?