问题标签 [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 投票
2 回答
7985 浏览

c# - 在不同的 AppDomain 中加载具有依赖项的程序集

我的目标是在 2 个给定文件夹之间进行缺失的依赖检查。想象一下以下设置。

根\DirA\A.dll

根\DirB\B.dll

B依赖于A。

因此,鉴于这些文件夹,我想创建一个新的 AppDomain,加载 B.dll 并在新的 AppDomain 中自动解析和隔离来自 DirA(A.dll) 的依赖项。

隔离是这里的关键,因为当我卸载这个 AppDomain 时,我想创建一个新的 AppDomain 可能再次作为依赖项,但是 DirC 库需要它,所以在 DirC 也依赖于 DirB 的情况下,我希望它抛出一个例外。

编辑:添加一个代码示例以帮助更好地描述我的问题。

感谢您提供任何帮助。

0 投票
1 回答
494 浏览

asp.net - 无法在新的 appDomain 中加载程序集

我有一个 mvc3 应用程序。我的应用程序项目中有一个名为“插件”的子文件夹

存储在该文件夹中的所有 dll 都应该在运行时更新,所以我们放下 appdomain 并重新加载新版本的 dll,所以我尝试将所有插件 dll 加载到不同的 appDomain 并设置它的 shadowCopy 属性.

通过 SO、msdn 和一些博客,我得到了这个“解决方案”。(这是在我的 Application_Start 期间调用的)

“Item.dll”是我试图加载的 dll。最后一行抛出“无法加载文件或程序集项或其依赖项之一”。这似乎是其他人成功的方式,但它对我不起作用。

我以前没有使用 AppDomains 的经验,所以我不确定如何解决这个问题,或者我是否正确处理它。

我的程序集通过新的 AppDomain 加载是一种好的方法吗?

0 投票
1 回答
207 浏览

c# - 卸载后 AppDomain 和使用的 DLL 的问题

我有一个问题,加载到我的新 Appdomain 的 DLL 也加载到了主 appdomain!

我有一个继承自 MarshalByRefObject 的类“Servicebase”。

现在我有不同的子类继承自这个基类。

这些子类应该在它们自己的应用程序域中实例化。

我用这段代码做的:

这行得通...

现在我用这段代码创建我的实例:

当我现在检查“AppDomain.CurrentDomain.GetAssemblies()”时,我的实例程序集没有加载到我的主程序集中。

但执行此操作后:

我当前的程序集也加载了 dll。

谁能告诉我为什么?我能做什么?

0 投票
2 回答
11357 浏览

.net - 为默认 AppDomain 设置卷影复制的正确方法是什么

有关我可以使默认 AppDomain 使用某些程序集的卷影副本吗?,它描述了在特定目录的默认 AppDomain 中激活卷影复制的有效解决方案。

基本上它说使用这些简单的方法:

但是因为这里使用的方法被标记为过时,所以我想知道现在完成相同操作的正确方法是什么。警告消息提示:

请调查 AppDomainSetup.ShadowCopyDirectories 的使用情况

AppDomain 有一个称为此类型的成员,SetupInformation它可能会将您带到这个简单的实现

不幸的是,这没有效果。所以问题是,有没有办法改变当前 appdomain 的 AppDomainSetup 来激活卷影复制?

0 投票
2 回答
558 浏览

appdomain - 如何在具有不同 NET 版本的 AppDomain 中加载 dll

我有一些使用 Net 2.0 构建的第三方程序集。虽然我当然可以在 net 4 中引用该程序集,但运行该应用程序会导致各种奇怪的错误。

所以我虽然将它加载到一个单独的应用程序域中会解决这个问题,但它没有。我假设它仍然使用 Net 4 运行时执行。有没有办法强制在不同的网络版本中执行应用程序域?

我使用 CreateInstanceFromAndUnwrap 而不是调用代理。

谢谢你的帮助

0 投票
1 回答
704 浏览

asp.net - AppDomainSetup 在 ASP.NET 中的使用

由于自 .NET 2.0 以来SetShadowCopyPathSetShadowCopyFiles已过时,我想通过AppDomainSetup类的ShadowCopyDirectoriesShadowCopyFiles属性设置这些参数。

在 MSDN 中,这是正确的用法:

这很好。但是,我如何在我正在运行的 Web 应用程序的当前域上进行这项工作,因为它的AppDomain是由 ASP.NET 在应用程序初始化时创建的(当第一个用户请求到达 IIS 时)并且我无法更改当前域设置?

提前致谢。

0 投票
2 回答
2617 浏览

c# - 获取应用程序中 AppDomain.CurrentDomain 对象的控制权

我需要将电流设置AppDomain为我创建的内容。

我想使用企业库HandleException方法记录我的应用程序异常。当我处理异常时,它会在日志表中插入一个日志,并设置没有意义的AppDomainName字段。System.AppDomain.CurrentDomain.FriendlyName

我想FriendlyName为我的应用程序拥有自己的应用程序。

0 投票
2 回答
4894 浏览

c# - c# shadowcopy 示例

我还需要使用链接的 dll 更新我的可执行文件。

我已经阅读了有关AppDomainSetup.ShadowCopyFiles但我在尝试正确的步骤来做我需要的事情时遇到了麻烦

问题是:

  • 只有在通知更新或每次启动可执行文件时才需要创建卷影副本?
  • 复制和更新 dll 和 .exe 的正确步骤是什么?
0 投票
2 回答
10892 浏览

c# - AppDomain.Load() 失败并出现 FileNotFoundException

我正在尝试将我的插件 dll 加载到单独的 AppDomain 中,但 Load() 方法因 FileNotFoundException 而失败。此外,似乎设置 AppDomainSetup 的 PrivateBinPath 属性无效,因为在日志中我看到“初始 PrivatePath = NULL”。所有插件都有强名称。通常每个插件都存储在[Application startp path]\postplugins\[plugindir]中。如果我将插件子目录放在[Application startp path]目录下,一切正常。我也尝试过手动更改 AppBase 属性,但它没有改变。
这是代码:

这是日志:

0 投票
1 回答
1320 浏览

c# - C# Winforms - 尝试通过将 FileDialogPermission 添加到 AppDomainSetup 来显示 OpenFileDialog

我正在尝试理解 .Net4.0 中的沙盒,但偶然发现了这个问题,并且不确定如何在 C# Windows 窗体应用程序中解决它。

在解决方案资源管理器中,我有 2 个项目。第一个项目只包含一个带有单个按钮的 Winform。当我单击按钮时,代码是为了调用第二个项目并打开一个OpenFileDialog控件。我根本没有进行任何文件读取..只是试图简单地显示OpenFileDialog控件。我在管理员权限下运行,但仍收到以下错误消息:

System.Security.SecurityException:请求“System.Security.Permissions.FileIOPermission,mscorlib,版本=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089”类型的权限失败。

帮助将不胜感激,这是实际的代码: