问题描述
简介
我正在开发一个.net项目,其中使用了一些32位版本的DLL。 DLL的列表是:
- 系统。*
- 微软。*
- AWSSDK。*
- Npgsql.dll
- Newtonsoft.Json.dll
- 其他供应商提供的其他dll
(DLL列表的长度实际上太长,因此无法在本篇文章中附加,但不要太长。)
要求
我只需要64位版本的DLL,目前,我手中只有32位版本的DLL。
我尝试过的事情
我使用名为SigCheck的工具验证了DLL的版本。
我尝试使用以下方法查找/转换DLL版本:
- 我在Internet和NuGet软件包管理器上进行了搜索,但找不到64位DLL。
- 我尝试通过更改项目属性下的以下设置将项目重新编译为64位: -构建->平台目标-> x64
编译后,项目DLL被转换为64位。但是,其余项目DLL的版本没有更改。
问题
如果有人可以共享文档链接/步骤将32位DLL转换为64位版本,我将不胜感激?
或
有人可以给我们发送链接以找到给定DLL的重新编译的64位版本吗?
请注意,我正在使用.NET Framework 4.6
解决方法
托管的.Net dll通常与平台无关。因此,对于大多数库而言,您无需担心,只需使用nuget来引用这些库,那么您应该会很好。 JIT编译器将负责根据平台将程序集编译为64/32位。
在编译dll时指定的平台目标仅在dll中设置一个标志。可以使用CorFlags更改此标志,但是如果它具有32位标志,则可能是有原因的。
当您需要使用本机程序集(即c ++ dll)时,通常会出现大问题。这些需要特定于平台。最好的解决方案是获取这些DLL的64位版本,但是您需要从libray的供应商那里获取它们,并更新项目中的引用。如果无法获得64位版本,最常见的解决方法是在单独的32位进程中运行该库。