在现代 .net 应用程序中使用旧的 .net dll

Use Old .net dll inside Modern .net application

我有一个名为 PcapNet.dll 的 .net dll 文件,该文件是 C++ WanPacket.dll 库的包装器。

但是 PcapNet.dll 使用 .net3.5 构建, 每次我在现代 .net 应用程序中引用它时 eg, .net 4.7

显示这条消息:

System.IO.FileLoadException: 'Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information.'

然后我添加了

<supportedRuntime version="v2.0" sku=".NETFramework,Version=v2.0"/>

App.config.

这会显示下一条消息:

System.IO.FileLoadException: 'Could not load file or assembly 'PcapNet.dll' or one of its dependencies. A dynamic link library (DLL) initialization routine failed. (Exception from HRESULT: 0x8007045A)'

然后我将 TargetFrameWork 更改为 3.5。现在一切正常。我可以使用它。

但这是个大问题我不能坚持.net 3.5我需要4.7因为我会在wpf应用程序中使用它。

那么我如何将这个遗留库 3.5 与现代 .net 4.7.

一起使用

注意:我没有这个库的源码,只能访问dll.

使用

<startup useLegacyV2RuntimeActivationPolicy="true">

解决了问题。