Castle DynamicProxy 拦截器在处理不同程序集时出现问题

2024-01-29

我有一个这样的场景:

我使用拦截器来捕获对主项目引用的程序集中的类(我们称之为功能)的调用。程序集功能由 NuGet 安装(它不是公开的,而是我们的内部程序集),并引用另一个程序集(我们称之为 Core)。主要项目也引用了汇编核心。 Core 包含用作被拦截方法之一的参数类型的类定义。

只要主项目和功能引用相同版本的核心库,一切都可以正常工作。当此版本不同并且拦截的方法使用 Core 中的类型作为方法参数时,就会出现问题。

在这种情况下,会抛出一个异常,指出A strongly-named assembly is required.:

[FileLoadException: Could not load file or assembly 'Core, Version=0.2.2.30, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)] 
 Castle.Proxies.Invocations.IBasketService_Update.InvokeMethodOnTarget() +0
 Castle.DynamicProxy.AbstractInvocation.Proceed() +116
 Project.Basket.BasketServiceUpdatedInterceptor.Intercept(IInvocation invocation) in c:\(...)\Basket\BasketServiceUpdatedInterceptor.cs:20
 Castle.DynamicProxy.AbstractInvocation.Proceed() +604
 Castle.Proxies.IBasketServiceProxy.Update(ProductId productId, UInt16 quantity) +210 (...)

其中 Core 0.2.2.30 版本是程序集功能所期望的版本,主项目正在使用例如版本 0.2.2.31。 Castle DynamicProxy 无法找到版本 0.2.2.30 的 Core,这是正确的,因为这个确切的程序集未部署到 bin 文件夹。

请注意,在我们的场景中,不同版本的 Core 是完全正常的情况。功能组件期望的版本高于指定的版本 - 不是确切的版本。

我不确定 DynamicProxy 的装配期望是否应该不那么严格,因为我确实必须接受这个限制。我编写了简单的代理类来解决这个问题,因此它不再阻止我,但它阻止我们在解决方案中使用 DynamicProxy。


该问题是由于 DP 是针对已签名的程序集生成的,然后使用该程序集的未签名版本而引起的。

解决方案是确保在这两种情况下都使用签名的程序集,或者强制 DynamicProxy 仅生成未签名的程序集。

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

Castle DynamicProxy 拦截器在处理不同程序集时出现问题 的相关文章

  • 是否保证 sizeof(T[N]) == N * sizeof(T) ?

    我一直假设 N 个元素类型的数组的大小T 由返回sizeof保证正好是N次sizeof T The 对这个问题的评论 https stackoverflow com questions 46457449 is it always the c
  • C - 计算文件中的单词、字符和行数。字符数

    我必须用 C 编写一段代码 输出给定文件中的字符数 行数和单词数 任务看起来很简单 但我现在真的不确定出了什么问题 所以 这是代码 include
  • 将 ARGB 拆分为字节值

    我有一个 ARGB 值存储为 int 类型 它是通过调用 ToArgb 来存储的 我现在想要来自 int 值的各个颜色通道的字节值 例如 int mycolor 16744448 byte r g b a GetBytesFromColor
  • 为什么使用数组索引循环数组比指针访问慢?

    我正在读Kochan的书 Programming in C 在第 14 页的 指针和数组 部分中 264 他说 一般来说 索引数组的过程比执行索引过程花费更多的时间 访问指针内容的过程 其实这也是主要原因之一 为什么使用指针来访问数组的元素
  • 析构函数与成员函数竞赛

    当我在析构函数内时 其他线程是否可能开始执行对象的成员函数 遇到这种情况该如何处理呢 C 没有内在的保护来防止在删除对象后使用它 忘记竞争条件 另一个线程可以在完全删除你的对象后使用你的对象 Either 确保只有一个位置 代码拥有该对象
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 微软怎么能说WinAPI中一个字的大小是16位呢?

    我刚刚开始学习WinAPI 在MSDN中 对WORD数据类型提供了以下解释 WORD16 位无符号整数 范围是十进制 0 到 65535 该类型在 WinDef h 中声明如下 typedef 无符号短 WORD 很简单 而且它与我一直在使
  • 如何生成可变参数包?

    给定不相关的输入是否可以生成非类型参数包 我的意思是 我想改变这一点 template
  • 将旧的 Unity 代码升级到 Unity 5

    在触发按钮上播放动画的代码似乎不起作用 我在 Youtube 上看到了一个视频 内容很简单animation Play 它可以在该视频上运行 但我无法让它在我的计算机上运行 我做错了什么还是团结改变了它 请帮助我在网上找不到解决方案 所有
  • ef core 在更新数据库期间不使用 ASPNETCORE_ENVIRONMENT

    我使用 Visual Studio 通过一定的迁移来更新我的所有环境 使用下面的命令效果很好 update database Migration initMigrationProduct c ProductContext Environme
  • “DeploymentItem”属性是什么意思?

    假设我们有一个简短的程序 namespace ConsoleTryIt static class Program static void Main string args var sum Add 1 2 private static int
  • 快速将文本附加到文本框

    我有一个BackgroundWorker正在发布消息的线程 使用BeginInvoke在 GUI 中的文本框中 方法 write debug text 在文本框中显示文本使用AppendText并将文本写入Console 外观上是这样的Ba
  • C中使用JNI从对象获取对象

    public class Student private People people private Result result private int amount 这是 Java 中类的示例 在C中 我试图获取 学生 中的 人 但失败了
  • NSubstitute - 测试特定的 linq 表达式

    我在当前正在开发的 MVC 3 应用程序中使用存储库模式 我的存储库界面如下所示 public interface IRepository
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • 打印任何类型的数组和列表的通用方法[重复]

    这个问题在这里已经有答案了 每当我调试一段涉及整数 双精度 字符串等数组或列表的代码时 有时我更喜欢打印它们 我为此所做的是为不同类型编写重载的 printArray printList 方法 for e g 我可能有这 3 种方法来打印各
  • SMTP 客户端在 C# 应用程序中显示错误“未采取请求的操作”

    我正在尝试使用 hotmail 帐户设置电子邮件发送应用程序 代码如下所示 MailMessage mail new MailMessage from to mail Subject Proba email mail Attachments
  • 推断“x => { throw .. }”的 Lambda 与重载方法中的 Func 匹配吗?

    我不明白为什么 C 最终在以下 LINQPad 代码中执行不正确的扩展方法 void Main Actual Sync Action Expected Sync Action Run x gt x Dump Actual Async Tas
  • 从其对象获取结构体字段的名称和类型

    例如 我有一个类似这样的结构 struct Test int i float f char ch 10 我有一个该结构的对象 例如 Test obj 现在 我想以编程方式获取字段名称和类型obj 是否可以 顺便说一句 这是 C 你正在要求C
  • 为什么 INT64_MIN 的定义不同?为什么他们的行为不同?

    The stdint h我公司的标题是 define INT64 MIN 9223372036854775808LL 但在我项目的一些代码中 一位程序员写道 undef INT64 MIN define INT64 MIN 92233720

随机推荐

  • 每次本地文件更改时使用 Flask SocketIO 更新网页

    每次我的本地文件 文件名更改时 我都需要更新我的网页 在不使用套接字的情况下 我只需每 1 秒刷新一次页面即可完成 我是通过读取文件名的内容并将其发送到我的网页模板来完成此操作的 但我需要使用套接字并使该过程异步 以便不使用自动刷新 我使用
  • 文档就绪时触发弹出窗口或 div id

    我需要帮助在页面加载时触发弹出窗口 目前 当我单击 你好 链接时 弹出窗口将打开 预期结果 弹出窗口应该打开 无需单击超链接或弹出窗口文件准备好 HTML a class button2 href popup1 hello a div cl
  • 如何增加R中max.print的限制

    我正在使用GraphR 中的包 用于 5461 个项目的 maxclique 分析 我得到的最终输出项非常长 因此我收到以下警告 reached getOption max print 省略 475569 行 有人可以向我提供有关如何增加限
  • 渴望加载关联但限制回报

    这似乎是一个简单的查询 但我就是无法确定 基本上 它可以归结为具有帖子的类别这一古老的概念 预期的关联已就位 一个类别有多个帖子 而一个帖子属于一个类别 我想检索所有类别及其帖子 但将帖子数量限制为 10 个 有任何想法吗 这不是您可以使用
  • iBooks 是如何做到这一点的?

    我目前正在 uiwebview 中显示文本 但是 我想允许用户选择文本并使用所选文本执行某些操作 谷歌搜索 苹果公司已经在 iBooks 上做了类似的事情 当您单击某个单词时 您可以选择在字典中查找该单词 我怎样才能用 Webview 做同
  • 如果离线,使用 Picasso 从磁盘缓存加载图像

    应用程序启动时 我从不同的网站下载了一些图像 方法如下 Picasso with context load image url fetch 现在 假设用户关闭应用程序并离线 当应用程序再次启动时 Picasso 以这种方式显示图像 Pica
  • 当委托不是 UIViewController 时,不会调用 UIImagePickerControllerDelegate 方法

    我有一个包含多个图像的视图 每个图像都旨在从设备的照片库中选择 我遵循了一个例子食物追踪器教程 https developer apple com library ios referencelibrary GettingStarted De
  • Java:如何使用 JVMTI 的 ForceGargabeCollection 真正强制执行 GC?

    我不是在寻找通常的 你只能使用Java暗示GC系统 gc 答案 这根本不是这个问题的目的 我的问题不是主观的 而是基于现实 GCcan在 Java 中是被迫的 我们日常使用的很多程序都这样做 IntelliJ IDEA NetBeans V
  • 谷歌折线图如何不插入丢失的数据

    我有一个包含一系列事件的数据库表 这些事件有发生的日期 现在我想显示每个月的事件数量并以折线图显示它们 我通过 php 获取数据并使用 data addrow 在循环中生成 js 代码 现在这工作正常 但如果有一个月没有事件 它不会被添加为
  • 我无法更改 SVG Sprite 的填充颜色

    我有这个pen http codepen io anon pen gpyMxV我在其中制作了 SVG Sprites 技术的示例 我想用 CSS 来应用它 circle fill f00 polyline fill 00f
  • Docker 检查与 docker 清单在层摘要中的差异

    我已经使用基本图像 alpine 3 3 构建了一个子图像 如果我使用命令检查新建的子图像docker inspect然后我看到里面的第一层摘要RootFS子图像的标签与基本图像相同 现在通过 docker hub 清单 API 检查相同的
  • 为什么 OAuth v2 同时具有访问令牌和刷新令牌?

    OAuth 2 0 协议草案的第 4 2 节指出 授权服务器可以返回access token 用于通过资源验证自己的身份 以及refresh token 它纯粹用于创建一个新的access token https www rfc edito
  • iTunes 正在听

    在 Windows Live Messenger 中 可以分享您当前正在收听的歌曲 我需要做什么才能在 C 中工作 比如 libarys 等 无法在 google 上找到正确的文档 您需要使用iTunes SDK从 NET 与 iTunes
  • Hyperledger Composer 发出身份信息但缺少名片

    我正在使用 Node js 应用程序和 composer client npm 模块进行概念验证 我尝试了不同的命令 例如添加参与者 添加资产和执行交易 一切似乎都正常工作 但是 当我尝试颁发新身份时 我没有得到预期的结果 我使用以下代码执
  • 如果没有 else 三元运算符

    到目前为止 我一直在网上搜索 该语句总是有 if 和 else 条件 例如a b c 我想知道是否if三元语句可以不使用else 假设我有以下代码 我希望关闭PreparedStatement如果它不为空 我正在使用 Java 编程语言 P
  • 无法导入:导入序列化程序时“无法导入rest_framework”? (视窗)

    我的 settings py 的 INSTALLED APPS 中有 rest framework 我可以在 cmd 中毫无问题地导入它 但我收到一条 无法导入 rest framework 消息 我可以在cmd提示符下导入rest fra
  • Ruby 元类:为什么定义单例方法时需要三个?

    让我们来计算一下 MRI 范围内的类别 def count classes ObjectSpace count objects T CLASS end k count classes 用类方法定义类 class A def self foo
  • CodeDom 的终结器?

    是否可以将 Finalizer 添加到 CodeDom 生成的类 除了使用 CodeSnippetTypeMember 之外 我在 MSDN 上找不到任何有关它的信息 这是 NET Framework 中的一个已知错误 并在不久前报告过ht
  • 使用 javac 时出错:“javac:无效标志:-s”

    我正在尝试指定 JDK 的另一个版本maven compiler plugin When target and source参数设置为1 5 一切正常 但是当我尝试使用 1 6 JDK 时 maven 报告错误 有人遇到过这个问题吗 Err
  • Castle DynamicProxy 拦截器在处理不同程序集时出现问题

    我有一个这样的场景 我使用拦截器来捕获对主项目引用的程序集中的类 我们称之为功能 的调用 程序集功能由 NuGet 安装 它不是公开的 而是我们的内部程序集 并引用另一个程序集 我们称之为 Core 主要项目也引用了汇编核心 Core 包含