在现代 .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">
解决了问题。
我有一个名为 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">
解决了问题。