相关疑难解决方法(0)

如何从主AppDomain卸载程序集?

我想知道如何卸载加载到主AppDomain中的程序集.

我有以下代码:

var assembly = Assembly.LoadFrom( FilePathHere );
Run Code Online (Sandbox Code Playgroud)

当我完成时,我需要/希望能够卸载这个程序集.

谢谢你的帮助.

.net c# appdomain

42
推荐指数
5
解决办法
3万
查看次数

C#将不同版本的程序集加载到同一项目中

我正在创建一些工具,执行NUnit等多个操作.在这个工具里面,我打开.dll程序集并调用方法形成它来运行一些测试.

一切都好,直到我需要重新加载.dll,程序重启.我们的想法是,当工具运行时,我们将所需的程序集复制到一些临时文件夹并从那里调用.如果我需要重新加载,我将另一个复制到另一个临时文件夹,并尝试从另一个文件夹加载新复制并加载到以前的程序集对象

  ExecutingAssembly = Assembly.LoadFrom(AssemblyFullPath); 
Run Code Online (Sandbox Code Playgroud)

但我的问题是,在我将AssemblyFullPath更改为新的并调用Assembly.LoadFrom之后,它只返回刚装入的第一次加载而不是第二次加载!也许问题是我们无法加载具有不同版本的多个程序集?解决办法是什么?

.net c# reflection version .net-assembly

8
推荐指数
1
解决办法
3767
查看次数

是否可以卸载在dotnet核心中动态加载的程序集?

在.net框架中可以在单独的AppDomain中加载程序集然后卸载它.在.net核心AppDomain不可用,并由AssemblyLoadContext取代.我可以将程序集加载到AssemblyLoadContext,如下所示:

 var assembly = AssemblyLoadContext.Default.LoadFromStream(stream);
Run Code Online (Sandbox Code Playgroud)

有没有办法卸载它?

c# .net-core

6
推荐指数
1
解决办法
3711
查看次数

如何处理跨应用程序域数据交换

我们正在构建一个.NET应用程序,我们加载外部代码程序集("插件").到目前为止,我们将这些程序集加载到单个(主)应用程序域中.

我们希望能够在加载后卸载它.

为此,我们正在设计一个系统,该系统将创建一个单独的辅助AppDomain来托管插件程序集,以便随意卸载.

我们用这种方法遇到的问题:

  1. 插件DLL需要与主AppDomain(例如,logger)中的类进行交互.
  2. 发送到插件dll的数据不一定标记为Serializable或从MarshalByRefObj派生.

在这种情况下,是否存在对应用程序进行分区的常见做法?我们可以采用的最佳解决方案是什么?

另一个有趣的问题 - 为什么MarshalByRef没有属性并迫使我们从一个对象派生出来?

.net c# appdomain

5
推荐指数
1
解决办法
1045
查看次数

加载后删除装配

我正在尝试使用以下代码加载MSIL程序集:

        string PathOfDll = "PathOfMsILFile (Dll)";
            Assembly SampleAssembly;
            SampleAssembly = Assembly.LoadFrom(PathOfDll);
Run Code Online (Sandbox Code Playgroud)

在该程序的结尾,我应该删除该文件:

            File.Delete(PathOfDll);
Run Code Online (Sandbox Code Playgroud)

它导致错误:'System.UnauthorizedAccessException'

Additional information: Access to the path 'Path' is denied .
Run Code Online (Sandbox Code Playgroud)

它与UAC无关,只是因为我在程序开始时加载程序集,而当我想手动删除它时,它表示该文件正在vshost.exe中使用。所以我说这只是为了表明它是用于组装的!

那么有什么方法可以摆脱它(类似于卸载此程序集)?

注意:我正在编写代码来运行垃圾收集器,但此问题仍未解决。

谢谢。

c# .net-assembly

4
推荐指数
1
解决办法
1230
查看次数

标签 统计

c# ×5

.net ×3

.net-assembly ×2

appdomain ×2

.net-core ×1

reflection ×1

version ×1