c# – 如何在不重新编译的情况下处理第三方.Net程序集的新版本?
我有一些项目依赖于外部.Net程序集来运行.这些是从我的程序外部安装的,因此我无法直接控制正在使用的版本.此外,预计将安装更新.
例如,在一种情况下,我正在访问提供.Net接口来控制它的硬件设备.当用户最初安装设备时,他们会安装包含的驱动程序.我编写程序时的驱动程序可能是3.0.4.0.最新版本可能是3.1.8.0. 当发生这种情况时,我的程序无法加载程序集,抱怨清单定义不正确.下面显示了一条特定的异常消息. 另一个例子是标签计划.它们提供.Net接口,允许我的程序通过他们的系统打印标签.安装该程序的更新版本是致命的. 以下是特定的异常消息: Could not load file or assembly 'SDK.NET.Interface,Version=17.1.0.0,Culture=neutral,PublicKeyToken=865eaf3445b2ea56' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. 如果我在我的计算机上安装此版本的应用程序,然后引用程序集的更新版本并编译,我很高兴. . .目前. 但是,我再次遇到这个问题只是时间问题. 我已经尝试将引用程序集的Specific Version属性设置为False,但这不会影响问题. 解决这个问题的正确方法是什么? 解决方法
只要方法签名不变,您就可以“即插即用”.
如果这些更改,那么您将需要修复基本代码. 查看Microsoft关于重定向程序集版本的文档: 另一个选择是如果这些库以某种方式由您或您的公司控制,您可能会有一些带有反射的摆动空间,通过基本类型/接口加载它们并使用常用方法…但您需要访问基础类型. 这也是一个重复的问题: Upgrade a reference dll in a C# project without recompiling the project Upgrading dependent DLL without recompiling the whole application (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |