appdomain相关内容

是否可以防止子 AppDomain 中的未处理异常导致主进程崩溃?

我正在编写一个小型插件库,它使用应用程序域来隔离使用 .Net 框架 4.0 的插件.因此,每个插件中的代码都超出了我的控制范围.当其中一个插件引发未处理的异常时,我观察到结果好坏参半.它们如下. 当插件的主线程中抛出未处理的异常时,调用插件的执行方法的主可插入应用程序能够捕获并干净地处理它.那里没有问题.然而, 如果插件在插件的 Execute 方法中为基于 WinForms 的应用 ..
发布时间:2022-01-12 11:38:54 C#/.NET

.NET Core 中没有 AppDomains!为什么?

微软选择在 .NET Core 中不支持 AppDomains 是否有充分的理由? AppDomains 在构建长时间运行的服务器应用程序时特别有用,我们可能希望在不关闭服务器的情况下以一种优雅的方式更新服务器加载的程序集. 如果没有 AppDomains,我们将如何在长时间运行的服务器进程中替换我们的程序集? AppDomains 还为我们提供了一种隔离服务器代码不同部分的方法 ..
发布时间:2021-11-26 12:44:27 C#/.NET

将 DLL 加载到单独的 AppDomain 中,只有已知的通用接口

我需要在另一个域中加载 .dll(插件).在主应用程序中,我对插件类型一无所知,只知道它们使用某些方法实现了通用接口 ICommonInterface.所以这段代码无济于事,因为我无法创建具有接口类型的实例. AppDomain domain = AppDomain.CreateDomain("新域名");//对域做其他事情,比如设置安全策略string pathToDll = @"C:\myD ..
发布时间:2021-11-26 12:17:51 C#/.NET

FileNotFound 加载依赖于另一个域的程序集时

我正在尝试使用插件制作应用程序. 我有 MainLib.dll,在那里我用 1 个方法制作了一些通用接口(让它成为 ICommon).然后,我制作了 2 个 .dll(插件),它们引用了 MainLib.dll 并在某些类中实现了 ICommon.此外,我删除了此 .dll 中的所有引用,除了 System. 然后,我创建了一个应用程序,它监视文件夹".\\Plugins" 并加载ne ..
发布时间:2021-11-26 12:16:32 C#/.NET

C# .dll 程序集可以包含入口点吗?

我的目标是创建一个可执行文件来启动影子复制应用程序.诀窍是,我希望这个启动程序没有外部依赖项,并且不必包含有关它必须启动的程序的任何知识. 我还希望它成为目录中唯一的可执行文件.换句话说,我希望它“运行"一个 .dll 程序集而不是一个 .exe 程序集.(我可以要求加载到新 AppDomain 中的 .dll 文件的名称每次都相同,例如 Main.dll 或类似内容.) 看起来 Ap ..
发布时间:2021-11-26 12:14:08 C#/.NET

创建应用程序域并加载程序集

我想创建一个具有默认权限的应用程序域并以默认权限将程序集加载到应用程序域中并执行程序集内的方法. 解决方案 您可以查看 MSDN 上的以下文章.或者,如果您想在另一个 AppDomain 中构造某个类型的实例(假设该类型具有默认构造函数): var domain = AppDomain.CreateDomain("NewAppDomain");var path = @"C:\work\S ..
发布时间:2021-11-26 12:13:24 C#/.NET

如何动态编译、加载和使用 C# DLL

A) 动态编译 C# EXE 和 DLL 相对容易. B) 执行一个 EXE 意味着运行一个新的应用程序.加载 DLL 意味着可以在应用程序或项目之间共享的情况下使用方法和函数. 现在,可以从 MSDN 或为了您的方便: private bool CompileCSharpCode(string script){lvErrors.Items.Clear();尝试{CSharpCode ..
发布时间:2021-11-26 12:04:04 C#/.NET

.NET Core 中没有 AppDomains!为什么?

微软选择在 .NET Core 中不支持 AppDomains 是否有充分的理由? AppDomains 在构建长时间运行的服务器应用程序时特别有用,我们可能希望在不关闭服务器的情况下以一种优雅的方式更新服务器加载的程序集. 如果没有 AppDomains,我们将如何在长时间运行的服务器进程中替换我们的程序集? AppDomains 还为我们提供了一种隔离服务器代码不同部分的方法 ..
发布时间:2021-11-24 12:29:55 C#/.NET

在程序集中找不到入口点

我有一个应用程序,我需要在其中创建 AppDomain 并将程序集加载到其中并执行程序集中的方法. 这是我的代码 公共类 CreateAppDomain{公共无效 CreateAppDom(){AppDomain 域 = AppDomain.CreateDomain("myDomain");domain.ExecuteAssembly(@"C:\Visual Studio 2005\Pro ..
发布时间:2021-11-24 12:03:57 C#/.NET

AppDomain.AssemblyLoad 事件捕获事件处理程序中引发的所有异常

似乎 .NET AppDomain.AssemblyLoad 事件会捕获其事件处理程序中抛出的任何异常,而不是将它们传播给触发程序集加载的调用者(例如 Assembly.LoadFile()). 我的第一个问题是为什么这会捕获所有异常行为?Microsoft 通常非常严格地确保异常始终在其 BCL 中传播. 我的第二个问题,有没有办法关闭这种行为? 背景:我需要在加载程序集时对其 ..
发布时间:2021-11-24 11:56:42 C#/.NET

将程序集加载到新的应用程序域中,而不是 CurrentDomain

所以我的问题围绕着节省内存. 本质上,我需要将程序集加载到主/当前域以外的单独应用程序域中,检查该程序集中的类型,然后在完成后卸载新域. 目前我的解决方案如下: AppDomain NewDomain = AppDomain.CreateDomain("newdomain");foreach(dllPaths中的字符串路径)//dll路径的字符串列表{byte[] dllBytes ..
发布时间:2021-11-24 11:54:15 C#/.NET

将字节数组程序集加载到新的 AppDomain 中会引发 FileNotFound 异常

我正在尝试执行以下操作: 下载包含我需要执行的程序集的字节数组. 在新的应用程序域中从此程序集中加载一个对象并在该对象上执行方法 这是我尝试将程序集加载到新应用程序域中的代码: 公共对象 Execute(byte[] agentCode){var app = AppDomain.CreateDomain("MonitoringProxy", AppDomain.CurrentDo ..
发布时间:2021-11-24 11:53:12 C#/.NET

在 ReflectionOnly 模式下将程序集加载到新的 AppDomain 中时,方法没有实现

在我们的应用程序(具有 65 个项目的解决方案)中,所有引用的程序集都会在运行时分析 Ninject 模块的存在(也应用了一些过滤).这些模块稍后加载到 Ninject 内核中,每个模块都为内核声明绑定. 我们采用了一个加载器,它以仅反射模式将引用的程序集加载到单独的程序集中.与 Ninject 从目录加载程序集的方式不同的是,该目录可以包含带有不应加载的模块的程序集.而且在一开始,并不是所 ..
发布时间:2021-11-24 11:52:18 C#/.NET