AppDomain.CurrentDomain.Evidence 抛出 SerializationException

2024-01-23

在 VS 2013 中使用 ReSharper (8.2.2) 运行测试用例时,我遇到了一个奇怪的错误。

演示问题的简化测试用例仅包含两行代码:

CallContext.LogicalSetData("mydata", new ActivityStack());
var evidence = AppDomain.CurrentDomain.Evidence;

其中 ActivityStack 是可序列化的自定义类型。当测试用例通过 ReSharper 运行时,第二行会抛出异常:

System.Runtime.Serialization.SerializationException was unhandled by user code
  HResult=-2146233076
  Message=Type is not resolved for member 'CSG.Framework.Operations.ActivityStack,CSG.Framework, Version=15.2.0.0, Culture=neutral, PublicKeyToken=e7ab1d859f54b223'.
  Source=mscorlib
  StackTrace:
       at System.AppDomain.get_Evidence()
       at System.AppDomain.get_Evidence()
       at CSG.Framework.Utilities.AppDomainLauncher`1..ctor(String appDomainName) in d:\Work\Git\Framework\Src\Library\Framework\Utilities\AppDomainLauncher.cs:line 40
       at CSG.Framework.UnitTest.AppDomainLauncherTests.LaunchClassFromCallingAssembly() in d:\Work\Git\Framework\Src\Library\Framework.UnitTest\Utilities\AppDomainLauncherTests.cs:line 52
  InnerException: 

尽管当前 AppDomain 在 BaseDirectory 上似乎具有正确的路径,可以在其中找到包含该类型的程序集,但 CLR 似乎仍在使用 ReSharper bin 路径根据 Fusion 日志来探测程序集。如果我将程序集复制到 ReSharper bin 文件夹,问题就会消失,但我认为这不是正确的解决方案。我尝试订阅当前 AppDomain 上的 AssemblyResolve 事件,但未调用处理程序。

融合日志:

*** Assembly Binder Log Entry  (1/23/2015 @ 12:28:54 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:     C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable  C:\Program Files (x86)\JetBrains\ReSharper\v8.2.Qiwabic\Bin\JetBrains.ReSharper.TaskRunner.CLR45.x64.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: DisplayName = CSG.Framework, Version=15.2.0.0, Culture=neutral, PublicKeyToken=e7ab1d859f54b223 (Fully-specified)
LOG: Appbase = file:///C:/Program Files (x86)/JetBrains/ReSharper/v8.2.Qiwabic/Bin/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = JetBrains.ReSharper.TaskRunner.CLR45.x64.exe Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Program Files (x86)\JetBrains\ReSharper\v8.2.Qiwabic\Bin\JetBrains.ReSharper.TaskRunner.CLR45.x64.exe.Config
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: CSG.Framework, Version=15.2.0.0, Culture=neutral, PublicKeyToken=e7ab1d859f54b223
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/JetBrains/ReSharper/v8.2.Qiwabic/Bin/CSG.Framework.DLL.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/JetBrains/ReSharper/v8.2.Qiwabic/Bin/CSG.Framework/CSG.Framework.DLL.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/JetBrains/ReSharper/v8.2.Qiwabic/Bin/CSG.Framework.EXE.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/JetBrains/ReSharper/v8.2.Qiwabic/Bin/CSG.Framework/CSG.Framework.EXE.
LOG: All probing URLs attempted and failed.

这个链接(https://msdn.microsoft.com/en-us/library/dn458353(v=vs.110).aspx https://msdn.microsoft.com/en-us/library/dn458353(v=vs.110).aspx)解释了根本原因。

涉及两个应用程序域:默认应用程序域(ReSharper 运行程序)和当前应用程序域(测试用例)。当AppDomain.Evidence在当前应用域中执行时:

  • 它查找当前应用程序域的证据。
  • 它尝试计算当前应用程序域的证据 基于当前域。
  • 获取当前域证据的调用会触发 从当前应用程序域到默认应用程序域的跨应用程序域调用 应用程序域。
  • 作为 .NET Framework 中跨应用程序域契约的一部分, 逻辑调用上下文的内容也必须被编组 应用程序域边界。

由于逻辑调用上下文中的类型 (ActivityStack) 无法在默认应用程序域中解析,因此会引发异常。

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

AppDomain.CurrentDomain.Evidence 抛出 SerializationException 的相关文章

  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • System.out.printLn() 错误? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我对 Java 编程非常陌生 而且还不擅长 我只是想编译这个小程序 这样我以后就可以用它来解决继承和多态性问题 我正在使用 JGr
  • JINI 还活跃吗?

    与我交谈过的每个知道它的人都声称这是自切片面包以来最伟大的事情 为什么失败了 或者 如果它没有失败 现在谁在使用它 查看千兆空间 http www gigaspaces com 这是一个相当成功的 Jini Javaspaces 实现 我认
  • 在 Spark 数据框中插入记录

    我在 pyspark 中有一个数据框 这是它的样子 timestamp price 670098928 50 670098930 53 670098934 55 我想填补时间戳与之前状态之间的空白 这样我就可以获得一个完美的集合来计算时间加
  • 设计软电子邮件确认

    我有一个使用 Devise 和可确认模块的 Rails 3 应用程序 然而 阻止新注册用户在确认其电子邮件之前访问该网站会导致保留问题 相反 我们希望立即授予用户访问权限and仍然向他们发送确认电子邮件 然后 我们将运行后台任务来锁定在固定
  • C# Graphics.RotateTransform 适用于本地主机,但不适用于远程服务器

    它可以在我的机器上运行 我在 ASP NET Web 主机上使用 C 图形方法时遇到问题 我将两个地图图钉组合成一个图像 我加载一个空的图钉图像并在其顶部写一个数字 然后我将其中两个组合起来 其中一个旋转 15 度 另一个旋转 15 度 通
  • 在 Perl 中,散列的键和值是否具有相同的“顺序”?

    我知道 Perl 中的哈希值没有排序 我担心的是我是否可以依赖索引关系中出现的键和值 假设我有这个哈希值 my h a gt 1 b gt 2 c gt 3 d gt 4 If I do keys h 我可能会得到 b a d c 我能保证
  • KERAS model.summary 中的“None”是什么意思?

    输出形状中的 None 100 是什么意思 这是 无 样本数还是隐藏维度 None意味着这个维度是可变的 keras 模型中的第一个维度始终是批量大小 您不需要固定的批量大小 除非在非常特殊的情况下 例如 当使用stateful TrueL
  • 设置操作栏项目文本颜色?

    我正在尝试使用自定义设置我的操作栏项目的文本颜色style 但没有任何效果 我尝试过设置
  • 如何使用 jQuery 和 AJAX 将 PHP 页面加载到 div 中?

    我正在尝试编写一个函数来调用getproduct php id xxx当点击时 我可以得到innerHTML部分出现 但我又如何调用php实际起作用的页面 var id id document getElementById digital
  • 如何将 UIColor 转换为十六进制(网页颜色文本字符串)?

    有没有简单的方法可以转换UIColor为十六进制值 或者我们是否必须使用以下方法获取 RGB 分量CGColorGetComponents然后从那里解决 e g CGColorGetComponents color CGColor 0 25
  • Python:BeautifulSoup - 从类的名称中获取属性值

    我正在从网页上抓取项目 其中有多个 a class iusc style height 160px width 233px a
  • 为什么改变原型不会影响之前创建的对象?

    我有以下代码 var A function var a new A var b new A A prototype member1 10 A prototype var c new A console log a member1 conso
  • 滚动条内容步长公式

    如下图所示 找出content step值正比于thumb height and thumb step content step是通过垂直位置的像素滚动量 这里的公式可能是什么 拇指高度的计算公式 var arrowHeight 25 va
  • 计算两个日期之间的时间?

    有人可以帮我完成这项工作吗 我想计算 VB NET 中两个日期之间的时间 如下所示 startdate 2011 12 30 enddate 2011 12 31 计算 小时 分钟 秒 你可以试试这个 DateTime startTime
  • 使用 cURL 重定向?

    我正在尝试使用 cURL 执行重定向 我可以很好地加载页面 这不是问题 但如果我加载 google com 则不会加载图像 并且该网站无法工作 显然因为它只是打印 HTML 而不是实际执行重定向 有没有办法使用 cURL 执行重定向 有点类
  • 使用较新版本的 Bouncy Castle 时,接收器无法验证 SMIME

    我正在使用 BC 来加密和签署 SMIME 消息 以便与 AS2 一起使用 我们的代码可以很好地与绝对古老的充气城堡版本配合使用 bcmail 1 4 125 升级到较新的版本会导致消息的接收者 不是太古老的 Cyclone 服务器 无法验
  • neo4j 导入速度减慢

    我正在尝试使用 cypher 将大约 500 000 个节点的中等数据集导入到 neo4j 中 我在配备 SSD 的 3 4 GHz i7 iMac 上本地运行 neo4j community 2 0 0 M05 我将密码传输到 neo4j
  • 用完整的背景图像填充 svg 路径

    我有下一个 svg
  • 如何检测malloc失败?

    有什么便携式方法可以检查是否malloc分配非零内存块失败 根据单一 Unix 规范 http pubs opengroup org onlinepubs 007908799 xsh malloc html malloc将返回NULL并设置
  • AppDomain.CurrentDomain.Evidence 抛出 SerializationException

    在 VS 2013 中使用 ReSharper 8 2 2 运行测试用例时 我遇到了一个奇怪的错误 演示问题的简化测试用例仅包含两行代码 CallContext LogicalSetData mydata new ActivityStack