【发布时间】:2019-08-07 07:16:38
【问题描述】:
我有一个 C# 项目,它使用依赖于旧版本 DevExpress 的第三方库。此版本 DevExpress 的一个 dll(DevExpress.Utils.v9.2.dll) 中有一个错误。我使用 .NET Reflector 和 Reflexil 来修补 dll 并使用修补后的 dll 替换旧的。然后当我重建解决方案时,Visual Studio 显示错误:
错误 CS0012 类型“XtraForm”在未引用的程序集中定义。您必须添加对程序集“DevExpress.Utils.v9.2, Version=9.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a”的引用。
似乎原始 dll 已签名导致问题。我试过删除强名称,但它不起作用。如何解决?
【问题讨论】:
-
你能从原始 XtraForm 派生一个类,修复那里的错误,并引用新的 dll(它引用 Devexpress 的 dll)
-
如果您在生成 DevExpress XtraEditors v9.2 程序集时拥有有效的许可证,您仍然可以下载它。可能有一个次要版本升级,您仍然可以访问它可能会修复您遇到的错误。在反编译后尝试重建已签名的程序集也可能违反 DevExpress 最终用户许可协议 (EULA):devexpress.com/Support/EULAs/winforms-controls.xml
-
@Brendon,据此post,该错误已在版本 10.1.8 中修复。
-
坦率地说,我认为您唯一的选择是升级到该版本。如果您拥有包含源代码的 v9.2 许可证,您可以自己修改它并将其提供给 DevExpress,后者将为您进行数字签名。但是,我不相信他们会使用反编译的源代码来做到这一点。
标签: c# dll devexpress reflexil