我如何解决 log4net 不断更改 publickeytoken 的问题

2024-07-04

我们有一个 asp.net 4.0 项目,它使用几个依赖于 log4net 版本 1.2.10.0 的框架。今天我尝试包含一个依赖于 log4net 版本 1.2.11.0 的新框架,从那时起我就陷入困境:

log4net 1.2.10.0 具有 publickeytoken = 1b44e1d426115821

log4net 1.2.11.0 的 publickeytoken = 669e0ddf0bb1aa2a

由于这些不同,我无法通过 web.config 中的运行时元素使用程序集重定向(使所有框架使用相同版本的 log4net)或代码库(仅让新框架使用版本 1.2.11.0)。

我在这里有什么选择?

(为什么 log4net 会在版本之间不断更改 publickeytokens,据我所知,丢失的密钥是版本 1.2.9.0 和 1.2.10.0 之间切换的原因,他们是否再次丢失了密钥?我将自愿提供我的保管箱如果他们需要的话保证它的安全......)

编辑:好的,所以 log4net 的人显然认为用两个键释放是一个好主意,但这意味着every您使用的框架需要达成一致which他们喜欢的两种风格中的一种,或者这些框架无法在同一个应用程序域中并行工作。我是唯一一个认为这是一个可怕想法的人吗?如果每个人都这样做,那么一切都会崩溃,对吗?

Edit2:正如我所说,我没有在业务代码中使用 log4net,但我使用了几个依赖于 1.2.10.0 的框架,当我尝试使用依赖于 1.2.11.0 的新框架(新密钥),所以 Stefans 的答案不适用,因为新框架将期望新密钥,而不是旧密钥


这就是我如何使用 1.2.11.0 版本进行工作。

  1. 首先诅咒 apache 更改密钥:)
  2. Download http://www.apache.org/dyn/closer.cgi/logging/log4net/binaries/log4net-1.2.11-bin-oldkey.zip使用旧密钥签名的 1.2.11.0 版本。
  3. 通过删除对 log4net(新密钥)的任何直接引用来整理您自己的代码,并替换为对使用旧密钥签名的程序集的引用。
  4. 通过将此段包含在 web/app.config 中,整理出您可能拥有的所有依赖程序集
   <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-1.2.10.0"
                                 newVersion="1.2.11.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何解决 log4net 不断更改 publickeytoken 的问题 的相关文章

  • 如何让 NHibernate 将 String.Empty 属性值保留为 NULL

    我有一个相当简单的类 我想通过 NHibernate 带有 Fluent 映射 将其保存到 SQL Server 该类主要由可选字符串字段组成 我的问题是我将类字段默认为 string empty 以避免 NullRefExceptions
  • Application.ThreadException:如果不分离,内存泄漏?

    The 参考页 http msdn microsoft com en us library system windows forms application threadexception aspx对于 Application Thread
  • .NET 元组和等于性能

    这是我直到今天才注意到的事情 显然 常用的元组类的 NET 实现 Tuple
  • 长时间保持数据库连接打开是否安全

    我有一个连接到远程数据库的 net 客户端应用程序 在客户端的生命周期 小时 内保持单个连接打开是否安全 如果我有多个 10 或 100 个客户端正在运行 这个答案是否成立 这样做绝对是安全的 这就是客户端 服务器应用程序的工作方式 如果您
  • 用于强制 .NET 应用程序以 32 位运行的环境变量

    有人告诉我 您可以设置一个环境变量来强制 NET 应用程序在 x64 版本的 Windows 上作为 32 位应用程序运行 你知道它是什么 或者知道它的参考资料吗 恐怕我的 google fu 今天让我失望了 或者它不存在 我正在使用 Re
  • C#计算面积和周长[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 所以我使用 Microsoft Vi
  • 如何将程序集保存到磁盘?

    如何将程序集保存到文件 IE 我的意思不是动态程序集 而是 正常 内存中程序集 Assembly asslist AppDomain CurrentDomain GetAssemblies foreach Assembly ass1 in
  • 我可以中断标有 DebuggerStepThrough 属性的方法吗?

    DebuggerStepThrough 属性告诉调试器跳过该方法 但是如果我真的想单步执行该方法并且不想删除该属性怎么办 有没有办法在 Visual Studio 中做到这一点 按 F12 转到方法定义 然后在单步执行之前在左大括号上放置一
  • 正在更改的线程参数

    当启动多个线程时 id我正在解析的参数有时是错误的 这是我的启动 for int i 0 i lt threadCount i Thread thread new Thread gt WorkerThread i thread Start
  • 从 OpenFileDialog 路径/文件名中提取路径

    我正在编写一个小实用程序 首先选择一个文件 然后我需要选择一个文件夹 我想将文件夹默认为所选文件所在的位置 OpenFileDialog FileName返回完整路径和文件名 我想要的是获得路径部分 无文件名 所以我可以用它作为初始选定的文
  • .net 新进程沙箱用于不受信任的代码

    所以我需要在新进程中运行动态编译的不受信任的代码 我找到了如何在新的 AppDomain http msdn microsoft com en us library bb763046 aspx 中执行此操作 但没有在新进程中执行此操作 可以
  • 在 vb.net 中打乱字符串数组

    我正在 vb net 中开发一个网页 它将向用户生成许多多项选择题 我需要对已经放入数组中的四个答案进行洗牌 假设我必须遵循以下数组 array Correct Wrong1 Wrong2 Wrong3 我尝试使用以下方法 Public S
  • 如何在 C# 中以编程方式创建 Microsoft Access 数据库?

    如果 Microsoft Access 数据库文件尚不存在 如何在 C 中创建它 最简单的答案是嵌入一个空的 mdb accdb文件写入您的程序并将其写入磁盘 正确的答案是将 COM Interop 与 ADOX 库一起使用 var cat
  • 当两个类具有相同名称但不同命名空间时,NHibernate DuplicateMappingException

    我的域模型根中有一个类 如下所示 namespace Domain public class Foo 我在不同的命名空间中还有另一个具有相同名称的类 namespace Domain SubDomain public class Foo 对
  • FindByIdentity - 性能差异

    以下代码在我们域中的各种机器上运行良好 var context new PrincipalContext ContextType Domain var principal UserPrincipal FindByIdentity conte
  • .NET 4 代码契约:“需要未经验证:源!= null”

    我刚刚开始在我的项目中使用代码契约 但是 我的存储库实现存在问题 它使用实体框架查询数据库 我有以下方法 public IEnumerable
  • 收据在打印文档中有重叠文本

    我正在 POS 项目中创建打印收据并附上输出的图片 我的问题是描述 数量 价格 金额的重叠 如何在这段代码的下一行显示数量 价格和金额 e Graphics DrawString Description new Font trebuchet
  • 国际象棋棋步验证库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 NET 中是否有可用于验证国际象棋走法和模拟游戏的库 如果该库能够理解代数符号中的移动并提供简单的 A
  • 如何在cmd / powershell中运行Nuget Package Manager Host

    我目前正在使用更新包Visual Studio 2017 Nuget 包管理器控制台中的命令 我需要从命令提示符使用它 eg nuget Update Package Newtonsoft Json Visual Studio 的包管理器控
  • GO 语句破坏了 .NET 中的 SQL 执行

    我有一个非常简单的 C 命令 shell 应用程序 它执行 SQL Server 生成的 SQL 脚本来编写模式和数据脚本 它在 GO 声明中爆炸了 错误信息 GO 附近的语法不正确 这是完整的 sql 脚本 Object Table gy

随机推荐

  • JOGL/OpenGL VBO - 如何渲染顶点?

    3我有以下SceneRenderer类 实现GLEventListener 我想我了解创建缓冲区 存储指向这些缓冲区的指针以及用数据填充这些缓冲区的过程 请参阅 init 方法 我奋斗的地方是展示 方法 我几乎尝试了在互联网上找到的所有内容
  • gsub() 中超过 9 个反向引用

    如何使用超过 9 个反向引用的 gsub 我希望下面示例中的输出为 e g i j o gt test lt abcdefghijklmnop gt gsub w w w w w w w w w w w w w w w w 5 7 9 10
  • 使用 Javascript 进行 SVG 旋转

    我已经在 HTML 页面中创建了一个 SVG 图像 现在我想移动 SVG 形状以使用 JavaScript 按钮 我的应用程序的 JSFiddle 在这里 http jsfiddle net johndavies91 xwMYY http
  • 寻找关于 JIDE 的反馈 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 包装 np.arrays __pow__ 方法

    我只是重新审视我的一些代码以提高性能 并遇到了一些奇怪的事情 a np linspace 10 1000 1000000 reshape 1000 1000 timeit np square a 100 loops best of 3 8
  • 捕获node.js崩溃原因

    我有一个用 node js 编写的脚本 它使用 net 库并通过 tcp 与远程服务进行通信 该脚本使用 node script js gt gt log txt 命令启动 该脚本中使用 console log 函数记录的所有内容都会写入
  • Spring Actuator 可以与非 Web Spring Boot 应用程序一起使用吗?

    我有一个 Spring Boot 应用程序 它侦听来自 IBM MQ 输入队列的消息 对消息进行一些处理 然后将消息放入输出队列 像这样的应用程序可以利用Spring执行器来监视应用程序 例如心跳检查 吗 从执行器文档来看 它似乎只能与 S
  • Swift:使用成员常量作为函数参数的默认值

    我有一个 swift 类 我试图在其中传递函数参数的默认值 class SuperDuperCoolClass UIViewController declared a constant let primaryColor UIColor UI
  • GnuRadio 伴侣 OOT XML 模式文档

    GnuRadio 伴侣使用 XML 文件来描述树外 OOT 模块块的 API 描述该 XML 模式的文档在哪里 这里有部分描述 https wiki gnuradio org index php GNURadioCompanion Crea
  • elasticsearch - 聚合返回 key 中的术语,但不是完整的字段,如何获取返回的完整字段?

    在elasticsearch实现中 我有一些基于几个字段的简单聚合 如下所示 aggs author terms field author size 20 order term asc title terms field title siz
  • 解析srt字幕

    我想解析srt字幕 1 00 00 12 815 gt 00 00 14 509 Chlapi jak to jde s t ma pracovn ma sv tlama 2 00 00 14 815 gt 00 00 16 498 Tro
  • 使用 python 将数据复制到 Vertica

    I use python and vertica python图书馆到COPY数据到Vertica DB connection vertica python connect conn info vsql cur connection cur
  • Visual Studio 2012 中没有 xaml 颜色格式

    这是我第二次安装 VS 2012 也是第一次 xaml 的颜色格式可以工作 但现在不再工作了 如果我可以更改工具中的某些元素 gt 字体和颜色 但我无法使用蓝色 恢复正常的默认方案红色 黄色外观 即使我改回默认值 你能帮忙的话 我会很高兴
  • 一个文件可以在 Git 中同时暂存和取消暂存吗?

    在处理另一个文件时 我编辑了README md然后跑了git add README md 当进行 git commit 时 我看到README md都在 要提交的更改 和 未暂存进行提交的更改 中 这有道理吗 在哪里 git我可以查看该文件
  • 如何安装并开始使用 Vuetify 和 Vue.js 3

    我在哪里可以找到新的 Vuetify 版本与 Vue js 3 兼容的文档以及如何使用 Vue cli 安装和设置它 在 vue 2 中我们这样做 vue create project name then vue add vuetify 我
  • 添加 prefix_with 子句以插入特定类

    我怎样才能定制prefix withSQLAlchemy 中的每个模型类 以便每个模型类都可以有不同的插入语句 我其实想要OR IGNORE子句添加到某些类中 PS 我对 SQLAlchemy 比较陌生 ORM 没有挂钩它的生成方式inse
  • Windows 7:防止应用程序失去焦点

    我有一个用 C 编写的 Windows 7 自制全屏应用程序 它应该作为公开演示自行运行很长时间 问题是 有几个应用程序或驱动程序或 Windows 本身会不时和 或特别是在系统启动时窃取焦点 结果是 我的全屏应用程序被最小化 这是非常烦人
  • “?” 是什么意思?在Java中是什么意思? [复制]

    这个问题在这里已经有答案了 我不知道问号是什么 在java中代表 我正在做一个小程序 一个Nim游戏 正在寻找一本书寻求帮助 并看到这样的说法 int pinsToTake min gt 2 2 1 看不懂 什么会 代表 它可能与 if 语
  • ClassLoader.getResourceAsStream 如何工作?

    我用 maven 创建了一个 jar 文件 当我打开这个罐子时 我可以找到以下内容 my jar text1 txt folder some other stuff 当我在 Eclipse 中运行此代码片段时 打印出 text1 txt 的
  • 我如何解决 log4net 不断更改 publickeytoken 的问题

    我们有一个 asp net 4 0 项目 它使用几个依赖于 log4net 版本 1 2 10 0 的框架 今天我尝试包含一个依赖于 log4net 版本 1 2 11 0 的新框架 从那时起我就陷入困境 log4net 1 2 10 0