问题标签 [appdomainsetup]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2664 浏览

c# - 为什么 AppDomainSetup.ShadowCopyFiles 是一个字符串?

文档中:

包含字符串值“true”的字符串,表示已打开卷影复制;或“false”表示已关闭卷影复制。

从 1.1 开始就是这样。任何人都可以解释一下吗?

我对 getter 和 setter 进行了反思:

所以也许Value数组会产生一个更简单的复制构造函数或什么?

0 投票
2 回答
7698 浏览

c# - 如何动态加载包含非托管代码的原始程序集?(绕过“无法验证的代码未能通过策略检查”异常)

我将给出一个使用System.Data.SQLite.DLL的示例, 它是一个带有非托管代码的混合程序集: 如果我执行这个:

不会抛出异常,但如果我这样做:

CLR 引发 FileLoadException,并显示“无法验证的代码未能通过策略检查。(来自 HRESULT 的异常:0x80131402)”。假设我正在尝试将这个程序集加载到子 AppDomain 上,如何自定义 AppDomain 的安全性以允许我通过策略检查?

0 投票
1 回答
1569 浏览

c# - AppDomain 卷影副本 - 加载/卸载动态加载的 Dll

下面我试图动态加载 dll 的代码不起作用。

这是我在 WCF 服务中使用的代码,但它仍然不起作用。

听说我们可以在 AppDomain 中使用 'Shadow Copying' 来实现。但我对“影子复制”以及如何在上面的代码中实现相同的内容一无所知。

请提供工作代码作为“影子复制”的示例。

-BS

0 投票
3 回答
3409 浏览

c# - 从 AppDomain 卸载 .DLL 需要帮助 - 即使使用 ShadowCopy 仍无法正常工作

我正在尝试执行以下操作。应用 A 是“母应用”。它保持打开状态。App B 只是一个 .DLL,我在其中编写了一些派生自 App A 中指定的接口的类。

然后,从 App A 中,我将从 App B 中“导入”类并在其中运行方法。我希望能够动态更改 App B(更改代码并重新编译)并在 App A 中使用新代码。

我在 App B 中有一个后编译命令,它将新的 .DLL 复制到 App A 目录。应用 A 创建一个新的 AppDomain 并使用 ShadowCopying。我认为这就足够了,但是当我尝试重新编译和复制 App B 的新 .DLL 时,它说该文件正在使用中并且无法被覆盖。

这是我现在拥有的代码:

应用 A(代码中的 TestServer):

应用 B(代码中的 TestClient):

我已经读过,如果您使用来自其他应用程序域的东西,这些应用程序域可以自动加载 .DLL 或类似的东西。在这种情况下,我担心使用接口会导致基础 AppDomain 加载 .DLL 从而将其锁定。

我该如何解决这个问题/是否有更好的设置?

注意:我已经更新了我的代码,它仍然产生相同的结果。

0 投票
1 回答
5535 浏览

c# - LoaderOptimizationAttribute 的作用

我编写了一小段关于动态加载程序集和从这些程序集创建类实例的代码,包括一个可执行文件、一个要动态加载的测试库和一个加载器库,用于将动态程序集加载到新的Appdomain. 加载程序库被可执行文件和动态库引用。

  1. 在这里,我设置LoaderOptimizationAttributemain()方法,但AppDomain.CurrentDomain.SetupInformation.LoaderOptimization.ToString();说它是NotSpecified为什么?

  2. MultiDomain和之间的区别MultiDomainHost对我来说不是很清楚。MultiDomainHost仅适用于 GAC 程序集吗?适合我的情况哪个更合适?

  3. 据此_

    JIT 编译的代码不能用于加载到加载源上下文、使用 Assembly 类的 LoadFrom 方法或使用指定字节数组的 Load 方法的重载从图像加载的程序集。

那么如何检测程序集是否加载了域中性?如何确保我加载的是域中立的?

0 投票
3 回答
24861 浏览

c# - 自定义 AppDomain 和 PrivateBinPath

我使用 c# 4.0 和一个控制台应用程序只是为了测试,下面的代码确实给出了一个异常。

在我创建的 AppDomain 上使用Load时,我不断收到 File not found 异常。

谢谢。

0 投票
0 回答
442 浏览

c# - 为什么 CreateInstanceFromAndUnwrap 在 Web 容器中不起作用?

嗨,我的代码如下所示:

在我的测试代码中(即不在 Web 容器中),它的工作原理就像一个魅力并加载程序集而不会抱怨。但是,然后我在我的应用程序中运行它(在 web 容器、II7/ 或 VS2010 开发容器中),然后它突然开始抱怨:

“成员 '... , ... , Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 的类型未解析。"}"

我什至修改了我的测试用例以使用与应用程序调用完全相同的参数调用 Load() 方法,并且测试代码(在 Web 容器之外)在应用程序代码引发上述错误时工作正常。

0 投票
1 回答
1446 浏览

c# - 寻找在 Sandbox AppDomain 中加载程序集的最低权限。为什么需要这些权限?

我正在尝试为沙盒 AppDomain 设置最低权限以加载程序集。似乎必须对 appBase 具有 PathDiscovery 权限,对加载的程序集具有读取权限,但对依赖程序集不需要权限。我的问题是:为什么我们需要 PathDiscovery?每个需要的程序集的读取权限不够吗?为什么只有加载的程序集需要读取权限而不是依赖的程序集?

这里有一个代码片段来提供一些上下文:

0 投票
1 回答
2251 浏览

c# - 使用 app.config 配置卷影复制

让我先解释一下场景。

我已经从一个安装库安装了多个服务副本(比如 10 个)。现在我想更新其中一个 dll。我需要停止所有服务,更新 dll 并再次重新启动服务。

为了避免这种情况,我在代码中使用了 ShadowCopying。这样可以在不停止所有服务的情况下更新 dll。如下。

现在我试图通过 app.config 文件来实现相同的功能,如下所示,来自 Asp.Net

有什么建议么?

0 投票
1 回答
279 浏览

.net - 插件 AppDomains 解决方法

在处理它们自己的子目录中的插件程序集时,有一个众所周知的问题,即这些程序集一旦尝试从它们的子目录加载它们各自的依赖项就无法加载。一种解决方案是在 AppDomains 中加载插件,这些插件在初始化时已PrivateBinPath在其对象中设置。AppDomainSetup但是,这会导致有关编组/跨 AppDomain 通信的其他困难,特别是如果插件应该提供一些 GUI。

当安全方面的优先级较低时(非关键实用程序应用程序,由于错误插件导致的崩溃没有严重问题),我有以下想法:在应用程序启动时,应搜索所有插件目录,并新建一个应创建 AppDomain,在其 bin 路径中包含这些目录。然后,整个应用程序及其 GUI 与所有插件一起在新的 AppDomain 中运行。

在给定的情况下,是否有任何理由避免该解决方案?或者是否有任何原因导致该解决方案甚至不可行?