.NET 项目中 64 位版本 DLL 的要求

Requirement of 64-bit version DLLs in a .NET project

简介

我正在开发一个 .net 项目,其中我使用了一些 32 位版本的 DLL。 DLL 列表为:

  1. 系统.*
  2. 微软。*
  3. AWSSDK.*
  4. Npgsql.dll
  5. Newtonsoft.Json.dll
  6. 来自其他供应商的一些其他 dll

(DLL 列表实际上太长了,无法附加到此 post 中而不会太长。)

要求

我只需要 64 位版本的 DLL,目前我手上只有 32 位版本的 DLL。

我尝试过的事情

我使用名为 SigCheck 的工具验证了 DLL 的版本。

我尝试使用以下方法 find/convert DLL 版本:

  1. 我在 Internet 和 NuGet 包管理器上进行了搜索,但找不到 64 位 DLL。
  2. 我尝试通过更改项目属性下的以下设置将项目重新编译为 64 位: - 构建 -> 平台目标 -> x64

编译完成后,工程DLL转为64位。但是,其余项目 DLL 的版本没有改变。

问题

如果有人可以共享文档 links/steps 将 32 位版本的 DLL 转换为 64 位版本,我将不胜感激?

有人可以向我们发送 link 以查找给定 DLL 的重新编译的 64 位版本吗?

请注意,我使用的是 .NET Framework 4.6

托管 .Net dll 通常与平台无关。因此,对于大多数库,您无需担心,只需使用 nuget 来引用库就可以了。 JIT 编译器将根据平台将程序集编译为 64/32 位。

您在编译dll 时指定的平台目标仅在dll 中设置一个标志。可以使用 CorFlags 更改此标志,但如果它具有 32 位标志,则可能是有原因的。

当您需要使用本机程序集(即 c++ dll)时,通常会出现大问题。这些需要特定于平台。最好的解决方案是获取这些 DLL 的 64 位版本,但您需要从库供应商处获取它们并更新项目中的引用。如果无法获得 64 位版本,最常见的解决方法是 运行 将库放在单独的 32 位进程中。