确定程序集的加载上下文

2024-01-09

给定一个加载的Assembly有没有办法(在代码中)确定它被加载到 3 个加载上下文中的哪一个(默认Load, 加载自, or Neither)?

In 苏珊·库克的“选择一个有约束力的上下文” https://web.archive.org/web/20190124235454/https://blogs.msdn.microsoft.com/suzcook/2003/05/29/choosing-a-binding-context/文章中,将程序集加载到LoadFrom。特别是,我的库使用反序列化并遇到InvalidCastException当加载到LoadFrom语境。

目前我的库失败得很晚(当它执行有问题的反序列化代码时失败 - 请参阅我的例子 https://stackoverflow.com/questions/23255892/how-to-reproduce-invalidcastexception-when-binding-to-an-assembly-in-the-loadfro)。我希望通过检测它加载到的上下文并在未加载到默认值时抛出异常,使其在这些情况下更早失败Load语境。


您可以测试它的行为,而不是识别程序集的上下文。例如,对于序列化,序列化程序将调用 Assembly.Load 并且该程序集必须match被序列化的对象的集合。可以通过检查代码库来测试匹配。

private static bool DoesAssemblyMatchLoad(Assembly assemblyToTest)
{
    try
    {
        var loadedAssembly = Assembly.Load(assemblyToTest.FullName);
        return assemblyToTest.CodeBase == loadedAssembly.CodeBase;
    }
    catch (FileNotFoundException)
    {
        return false;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定程序集的加载上下文 的相关文章

随机推荐

  • 在 React 中在函数内声明函数

    我刚刚遇到了一个 React 代码 我不确定这是否是一个好方法 这是该代码的示例实现 class App extends React Component renderMessage gt function getMessage return
  • 程序退出后,使curses程序输出保留在终端回滚历史记录中

    我对诅咒很陌生 所以我正在尝试 python 中的一些不同的东西 我已经初始化了窗口并为窗口对象设置了scrollok 我可以添加字符串 并且滚动可以正常工作 这样 addstr 在窗口末尾不会出现任何错误 我想要的是在程序完成后能够在终端
  • IIS URL 重写 ASP

    我尽力扫描论坛寻求帮助 以制作 web config 来重写此类 url domain com default asp id 3 language 2 我希望这可以是 domain com en service where language
  • Angular2 中的动态模板“嵌入”

    我正在努力实现这样的目标 我有一个名为的模型类ObjectTypeA ObjectTypeB and ObjectTypeC 还有一个工厂ComponentFactory 根据传入的对象类型将创建不同的组件 ComponentFactory
  • 通过代码获取文件 tnsnames.ora 的位置

    我怎样才能获得该位置tnsnames ora在安装了 Oracle 客户端的机器上按代码编写文件 Windows 注册表项是否指示该文件的位置 几年前我也遇到过同样的问题 当时我必须支持 Oracle 9 和 10 因此代码只处理这些版本
  • 访问 R data.frame 中倒数第二个值的最佳方法是什么?

    假设我有一个名为 SLV 的 data frame 并且我应用了 tail 函数 我会得到这个 gt tail SLV SLV Open SLV High SLV Low SLV Close SLV Volume SLV Adjusted
  • 致命错误:脚本超出最大执行时间 30 秒

    我有一位客户收到与脚本超时相关的错误 我已经包含了下面的代码 但我认为问题是需要延长超时 这是我可以在代码中设置的内容 还是必须由网络托管服务商 GoDaddy 设置 致命错误 D hosting 123 html siteame wp c
  • mysql 仅当用户不存在时创建用户

    我想执行一个CREATE USER语句 但仅当用户尚不存在时 这样做的最好方法是什么 如果您要创建用户 则还需要创建授权 如果用户不存在 授权会隐式创建一个用户 这就是为什么我们鼓励您在创建授权时包含密码 以防万一它们不存在 看http d
  • EF Core:使用字典属性

    有没有办法用 Entity Framework Core 填充字典属性 出于性能原因 我们喜欢在应用程序而不是数据库中进行搜索 由于列表不能很好地扩展 我们喜欢使用字典 例如 简化示例 class Course public Diction
  • console.log 的替代品?

    我想知道是否有其他方法可以在不使用控制台消息的情况下向控制台写入内容 我的项目在完成构建之前删除了所有控制台语句 但在特殊情况下 我需要找到一种通过控制台向用户显示某些内容的方法 如果没有控制台语句 这是否可能 您只能通过 Console
  • Scala 递归理解只在空列表前面添加一次,为什么?

    类似于这篇文章here https stackoverflow com questions 41471322 for comprehension in scala with recursive call 我正在学习 Scala 函数式编程
  • 如何在struts 2的s:action标签中使用ignoreContextParams属性

    在Struts 2中 有一个
  • 在 python 中连接 .m3u8 中存在的文件

    我正在尝试在 python 中连接 m3u8 播放列表中存在的 ts 文件 有什么办法可以做到吗 如果是 请解释一下如何 提前致谢 这应该可行 我只在这个简短的脚本中添加了两条注释 因为我想它几乎是不言自明的 import shutil P
  • 如何在discord.py中使用on_raw_reaction_add?

    好吧 我有一个程序 一个票务系统 它以 JSON 格式记录工单创建消息 ID 以便在程序重新启动时可以继续检查是否添加了新的反应 但我发现该消息必须加载到机器人的缓存中 但一旦重新启动 它就不会存在 所以我发现on raw reaction
  • 强制转换规范的字符值无效

    我正在使用 SQLXMLBulkLoad SQLXMLBulkload 3 0 将数据插入 SQL 2005 我的数据表有以下列 objDataTable Columns Add TaskDateTime System Type GetTy
  • Objective-C:UIViewController 中出现的键盘隐藏的 UIScroller 和 UItextfields

    我需要帮助尝试在 UIViewController 中配置键盘 a 不要将鼠标悬停在两个 UITextfields 上 因此滚动条应该正确定位 b 当用户触摸背景时键盘消失 我还没有尝试过 b 但我正在尝试 a 并且我通过谷歌搜索得到的代码
  • [System.Collections.Generic.List[string]] 作为返回值

    我需要 想要退货 System Collections Generic List string 来自函数 但它正在转换为System Object 我有这个 function TestReturn returnList New Object
  • 删除 Vim 中除正则表达式匹配之外的所有内容

    我的具体案例是一个包含大量文本和 IPv4 地址的文本文档 我想删除除 IP 地址之外的所有内容 我可以用 vglobal寻找 0 9 1 3 3 0 9 1 3 并删除所有没有IP地址的行 但之后我只知道如何搜索整行并选择匹配的文本 有更
  • 在另一个 LINQ 查询中重用 LINQ 查询结果,而无需重新查询数据库

    我遇到的情况是 我的应用程序根据用户指定的过滤条件使用 PredicateBuilder 构建动态 LINQ 查询 旁白 查看此link http petemontgomery wordpress com 2011 02 10 a univ
  • 确定程序集的加载上下文

    给定一个加载的Assembly有没有办法 在代码中 确定它被加载到 3 个加载上下文中的哪一个 默认Load 加载自 or Neither In 苏珊 库克的 选择一个有约束力的上下文 https web archive org web 2