gpt4 book ai didi

.NET:将程序集绑定(bind)到引用程序集的新版本,无需重新编译

转载 作者:行者123 更新时间:2023-12-02 08:57:16 25 4
gpt4 key购买 nike


我有一个强名称的 .NET 程序集 PluginHost,它使用 Assembly.LoadFrom() 动态加载插件程序集。它的程序集和文件版本为 1.0.0.0。每个插件程序集都会引用 PluginHost,因为在 PluginHost 中定义了一个接口(interface),每个插件都必须实现。

现在我想部署更新但完全向后兼容的 PluginHost 版本,其程序集和文件版本为 1.0.0.1。但现在旧的插件程序集无法加载,因为它们通过包含版本号的强名称引用 PluginHost。

如何在不破坏旧插件的情况下部署新版本的 PluginHost?

我发现的一个解决方案是将 PluginHost 的 Assembly-version 设置为 1.0,并且即使在更新版本中也将其保持在 1.0。我仅在每次新更新时将文件版本从 1.0.0.0 更改为 1.0.0.1 等。这样旧的插件程序集加载就不会出现问题。但这是要走的路吗?有没有更好的办法?我认为将程序集版本保留为常量值是不正确的。

您可能感兴趣的其他背景信息:PluginHost 在 VB6 应用程序中与 COM Interop 一起使用。这就是它有一个响亮名字的原因。 PluginHost 和插件都不在 GAC 中。 PluginHost 已使用 RegAsm.exe 注册。

谢谢。

更新

感谢您的回答。由于似乎没有合理的方法将应用程序配置文件与 COM Interop 一起使用,我想我坚持卡住程序集版本,仅在新版本的 PluginHost 中更改文件版本。

最佳答案

我希望我能正确理解您想要做的事情。如果是这样,一种方法是使用 bindingRedirect element在应用程序配置文件中。有关重定向程序集的详细信息,请参阅 MSDN .

关于.NET:将程序集绑定(bind)到引用程序集的新版本,无需重新编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3982503/

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