gpt4 book ai didi

c# - 如何在不重新编译的情况下处理新版本的第三方 .Net 程序集?

转载 作者:行者123 更新时间:2023-11-30 12:39:53 25 4
gpt4 key购买 nike

我有一些项目依赖于外部 .Net 程序集来运行。这些是从我的程序外部安装的,所以我无法直接控制正在使用的版本。此外,预计会理所当然地安装更新。

例如,在一种情况下,我正在访问一个提供 .Net 接口(interface)来控制它的硬件设备。当用户最初安装设备时,他们会安装随附的驱动程序。这个驱动在我写程序的时候可能已经是3.0.4.0了。最新版本可能是 3.1.8.0。

发生这种情况时,我的程序无法加载程序集,提示 list 定义不正确。下面显示了一个特定的异常消息。

另一个例子是标签程序。他们提供了一个 .Net 接口(interface),允许我的程序通过他们的系统打印标签。安装该程序的更新版本是致命的。

具体异常信息如下:

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 但这并没有影响问题。

解决问题的正确方法是什么?

最佳答案

只要方法签名不变,您就可以“即插即用”。

如果这些发生变化,那么您将需要修复您的基本代码。

看微软关于Redirecting Assembly Versions的文档: http://msdn.microsoft.com/en-us/library/7wd6ex19%28VS.71%29.aspx

另一种选择是,如果这些库由您或您的公司以某种方式控制,您可能有一些回旋余地,通过它们的基本类型/接口(interface)加载它们并使用通用方法...但您需要有访问基本类型。

这也是一个重复的问题:

Upgrade a reference dll in a C# project without recompiling the project

Upgrading dependent DLL without recompiling the whole application

关于c# - 如何在不重新编译的情况下处理新版本的第三方 .Net 程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43689094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com