AppDomain.CurrentDomain.SetupInformation.PrivateBinPath 为空

2023-12-31

当我启动只有一个 AppDomain 的应用程序时,AppDomain.CurrentDomain.SetupInformation.PrivateBinPath一片空白。即使我设置了探测路径MyApp.exe.config如下所示。

我本以为AppDomain.CurrentDomain.SetupInformation.PrivateBinPath包含字符串"Dir1;Dir2;Dir3".

如何访问配置中的探测路径MyApp.exe.config?

<?xml version="1.0" encoding="utf-8"?>

<configuration>
  <appSettings>
    <add key="Foo" value="Bar" />
  </appSettings>
  <startup>
    <!-- supportedRuntime version="v1.1.4322" / -->
  </startup>

  <runtime>
    <gcConcurrent enabled="true" />
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <publisherPolicy apply="yes" />

      <!-- Please add your subdirectories to the probing path! -->
      <probing privatePath="Dir1;Dir2;Dir3" />
    </assemblyBinding>
  </runtime>
  <system.windows.forms jitDebugging="true" />
</configuration>

Update

正如汉斯·帕桑特指出的下面评论 https://stackoverflow.com/questions/33353420/appdomain-currentdomain-setupinformation-privatebinpath-is-null?noredirect=1#comment54508987_33353420, SetupInformation.PrivateBinPath未为主应用程序域设置。所以上面的方法是行不通的。您对模拟融合在探测路径中搜索组件的方式有何建议,或者至少采用<probing privatePath="" />从当前应用程序配置考虑?我能想到的最好的办法就是阅读<probing privatePath="" />当当前域是主应用程序域时,手动从 App.config 中(AppDomain.CurrentDomain.IsDefaultAppDomain() is true)。有没有更好的办法?

Update 2

这里有一些额外的背景信息,这需要什么:这个问题发生在AppDomainAssemblyTypeScanner.GetAssemblyDirectories() https://github.com/NancyFx/Nancy/blob/master/src/Nancy/Bootstrapper/AppDomainAssemblyTypeScanner.cs#L330 of the 南希框架 http://nancyfx.org/.

Nancy 自动发现并加载第 3 方模块和其他“插件”。默认情况下,这应该以与正常链接的程序集加载相同的方式完成(即融合会这样做),通过查看探测路径。程序集使用加载Assembly.Load(相对于Assembly.LoadFrom)据我了解,所有依赖的已加载程序集的程序集也必须在应用程序/应用程序域的探测路径中可访问。


如何访问 MyApp.exe.config 中配置的探测路径

为了保持融合的兼容性,您可以读取配置文件有效获取当前探测路径:

private static string GetProbingPath()
{
    var configFile = XElement.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
    var probingElement = (
        from runtime 
            in configFile.Descendants("runtime")
        from assemblyBinding 
            in runtime.Elements(XName.Get("assemblyBinding", "urn:schemas-microsoft-com:asm.v1"))
        from probing 
            in assemblyBinding.Elements(XName.Get("probing", "urn:schemas-microsoft-com:asm.v1"))
        select probing)
        .FirstOrDefault();

    return probingElement?.Attribute("privatePath").Value;
}

假设您的问题中的配置文件示例返回: “目录1;目录2;目录3”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AppDomain.CurrentDomain.SetupInformation.PrivateBinPath 为空 的相关文章

  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 将 Excel 导入到 Datagridview

    我使用此代码打开 Excel 文件并将其保存在 DataGridView 中 string name Items string constr Provider Microsoft Jet OLEDB 4 0 Data Source Dial
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • .Net 4.0 应用程序在 64 位上比 32 位慢(分析和可能的解决方案)(应用程序正在使用 NetAdvantage)

    我们已经用 VB NET 4 0 VS2010 编写了 NET 应用程序 并使用设置为调试和发布配置的 AnyCPU 设置的所有项目进行编译 我们注意到 当此应用程序在 64 位环境中运行 在 Windows Server 2003 R2
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了

随机推荐

  • Active Storage Rails 5.2 出现 Blob 错误

    我刚刚升级了5 1 4 应用程序升级到 5 2 并尝试将 Paperclip 替换为 ActiveStorage 目前 当尝试使用图像更新现有记录时 出现以下错误 无法自动加载常量 ActiveStorage Blob Analyzable
  • 如何将 unicode 数字转换为整数?

    阿拉伯语和中文有自己的数字字形 int适用于所有不同的数字书写方式 我无法重现该行为 python 3 5 0 gt gt gt from unicodedata import name gt gt gt name RUMI DIGIT F
  • sql中如何存储树形结构?

    这是我使用 sqlite 的模式 我不确定这是否是在 sql 中创建树结构的好方法 因为我必须遍历很多次才能获取整个树 而不是根据顶部注释提取整个树并构建python 中的树 有人可以给我一些建议吗 BEGIN CREATE TABLE t
  • 如何使用 Castle ActiveRecord 在保存或更新期间自动填充字段

    问题 我们数据库中的所有表都有 CreatedDate CreatedBy ChangedDate ChangedBy 字段 我希望在保存 更新 ActiveRecord 实体时自动设置这些字段 我的第一次尝试是重写 Save 和 Upda
  • 订购 PHP 数组

    我有一个 php 数组 带有注释 必须以不同的方式排序 数组内容的顺序应该是这样的 parent child child child parent child child etc 父评论有 parent 0 子评论具有其父评论的 ID 例如
  • 如何在 Ubuntu 上的 GTK3 (GI) 和 Python 3 中获取剪贴板内容

    在 Python 2 中 通过我的机器 Ubuntu 12 10 中安装的内容 我可以执行以下操作 import gtk cb gtk clipboard get content cb wait for text 从剪贴板获取文本 然而 在
  • 规避“catch_warnings”上下文管理器错误,该错误会重置警告注册表,导致无限打印警告

    在我正在使用的模块深处 xarray 但这并不重要 catch warnings上下文管理器导致警告被一遍又一遍地打印 而不是像它应该的那样只打印一次 如果没有这样的上下文管理器 行为将如预期 cat mwe py usr bin env
  • 如何将 g++ 从 MinGW 添加到 PATH

    我在 Windows 10 上使用 Visual Studio Code 并尝试构建一个程序 称为Bus从源文件Bus cpp 与来自 MinGW 的 g 我使用从之前的线程中读取的各种方法修改了tasks json 文件 我提供了task
  • PHP 和“打开”mysqli

    我无法找到有关如何 打开 mysqli 的文档 我正在运行 OS X SL 据我了解 由于安装了 php5 mysqli 扩展也应该已经存在 这就像在 php ini 中添加 LoadModule 行一样简单吗 如果我需要重新编译 php
  • 使用 Google API 的 Chrome 清单

    我需要一些关于如何获取扩展的 chrome 清单以允许服务器和应用程序之间进行 Google API 对话的建议 当我直接指向应用程序 而不是扩展 时 应用程序加载正常 但是我的问题是 当我将其作为扩展加载时 出现以下错误 Refused
  • Oracle 查询作为 SSIS 中的源定义了错误的数据类型

    我有一个有点复杂的查询 我想将其用作 SSIS 包中的源 我创建 OLE DB 源 将访问模式指定为 SQL 并将查询粘贴到命令文本框中 当我单击 预览 时 示例数据会返回 一切看起来都很好 但是 当我尝试运行该包时 我收到 外部列与数据源
  • 当我使用 -std=gnu99 编译时,我还应该定义 _GNU_SOURCE 吗?

    我使用了一些 GNU 扩展 并意识到如果我将 gnu99 设置为 C 标准来使用 我可以省略 define GNU SOURCE gnu99 是否暗示 GNU SOURCE 或者使用它是否仍然更安全或强制以避免问题 您应该区分语言和库功能
  • IE7 中的开发人员工具可查看控制台日志消息

    在 IE 8 中 我看到了一个开发人员工具部分 并且能够访问其 javascript 控制台并查看我在其中编写的控制台日志 但我在 IE 7 中找不到这样的东西 它在哪里 有吗 我只想在 IE 7 中查看控制台日志命令的输出 开发人员工具已
  • 为什么LOOP在8086上比DEC,JNZ快?

    我的教授声称 LOOP 在 8086 上更快 因为只获取一条指令而不是两条指令 就像dec cx jnz 所以我认为我们通过避免每次迭代的额外获取和解码来节省时间 但在讲座的早些时候 他还提到 LOOP 在底层与 DEC JNZ 做同样的事
  • 组织大型 javascript 文件 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我已经开始为网站积累相当多行 Javascript 代码 到目前为止 所有内容都在一个文件中 并且该文件变得无法维护 如果一行中有错误 整个文件
  • Django 的 javascript 中的模板标签

    我的应用程序urls py is from django urls import path from import views app name javascript urlpatterns path create table views
  • jQuery 设置 flash wmode 参数

    我想知道是否有任何 jQuery 插件可用于在运行时将 wmode 更改为透明 和wibiya类似的东西 我尝试谷歌搜索 但找不到任何确切的插件来完成这项工作 我找到的唯一资源是 http www onlineaspect com 2009
  • Android - 如何获取 EditText(数字)然后将其转换为整数以用于数学?

    我想知道如何获取用户可以在其中输入数字的 EditText 区域 然后将其设为整数 以便可以在程序中使用它进行加法 减法 除法等 基本上我需要测试输入能够在代码中的计算器中使用 然后需要将其放入 TextView 或字符串中 以便用户可以看
  • 将企业库注册到 GAC 后无法解决类型运行时错误

    我致力于将企业库程序集注册到全局程序集缓存 GAC 中 我使用的是用自己的密钥签名的企业库 5 0 版 并且我在许多 NET 4 0 应用程序中使用这些程序集 成功将企业库程序集注册到 GAC 后 应用程序启动并显示以下消息 无法解析类型
  • AppDomain.CurrentDomain.SetupInformation.PrivateBinPath 为空

    当我启动只有一个 AppDomain 的应用程序时 AppDomain CurrentDomain SetupInformation PrivateBinPath一片空白 即使我设置了探测路径MyApp exe config如下所示 我本以