Net 7 NativeLibrary:加载不同的库版本

问题描述 投票:0回答:0

我们有一个加载本机(so-lib)的服务(.net 7,docker,Debian 11)。 Libs 有不同的版本。我们通过以下方式加载和释放它们:

IntPtr handle = NativeLibrary.Load(_libFileName);
NativeLibrary.Free(handle );

那些 so-libs 有不同的宏初始化。如果我现在首先加载最旧的库(版本 1.0.0),那么对于该库的所有更新版本,更新的宏不会重新运行。在我看来,所有库中的所有全局代码都只运行一次。有没有一种好方法可以完全卸载本机库以在新版本中重新加载它。

我已经尝试创建一个自己的实例

AssemblyLoadContext
(使用
isCollectible:true
)并用自己的
AssemblyLoadContext
加载库并在此之后卸载它但仍然是新的完整发布。

linux docker shared-libraries c#-native-library
© www.soinside.com 2019 - 2024. All rights reserved.