使用后卸载程序集或 AppDomain(如在对象浏览器中)

Unload Assembly or AppDomain after Use (like in Object Browser)

我正在尝试加载外部 Assembly 以在 运行 时间内列出所有 TypesMethodsProperties,就像 [=14] =] 在 Visual Studio 中。我的要求是,我想在 treeview 中加载外部 Assembly 列出其 Members 并在使用后卸载 AssemblyAppDomain。稍后在同一项目中,我使用相同的 assembly 对其进行修改和添加更多代码。由于我已经打开程序集,CompileAssemblyFromFile 不允许我编译并生成输出。我该如何处理这种情况? Object Browser 如何在 Visual Studio 中工作而不创建 Assembly 的实例,或者如果创建了它,如何在使用后卸载它?

P.S.

我已经尝试使用另一个 AppDomain 来加载程序集但没有成功。由于 treeview 是在主应用程序域中创建的,因此我无法在自定义应用程序域中访问它来添加节点。

基于 Mathieu Guindon 的评论。我正在我的 ASP.Net Web API 中加载程序集并将程序集内容序列化到 JSON 数组。稍后在我的客户端应用程序中,我在 HttpClient 的帮助下反序列化响应并填充 WinForms TreeView。

我是这样做的。示例代码。

//Action Model
public class ActionModel
{
   public string ActionName {get;set;}
   public IList<MethodInformation> ActionMethods {get;set;}
}

public class MethodInformation
{
   public string MethodName {get;set;}
   public IList<ParameterInformation> GetParameters {get;set;}
}

//API
public Object Get(string id)
{
    switch(id)
    {
        case "Assembly1":
           Type[] typesInAssembly = Assembly.LoadFrom(pathToAssembly).GetTypes();
           
           List<ActionModel> actionModel = new List<ActionModel>();
           
           for(var t in typesInAssembly)
           {
               /* add the items to the List actionModel */
           }
           return actionModel;
     }
}

在客户端,我还有一个 Class 消耗此 API 并通过反序列化 JSON 内容解析内容并将其显示在树视图中。

现在满足要求了。我可以使用相同的 Assembly 副本来显示和构建主要要求。希望我做对了。