【问题标题】:Platform agnostic .NET bitness - from OS or calling application?与平台无关的 .NET 位数 - 来自操作系统或调用应用程序?
【发布时间】:2010-10-07 19:51:42
【问题描述】:

我知道平台无关的 .NET 应用程序“浮动”到操作系统的位数。但是,从非 .NET 应用程序调用的 .NET 程序集是一个库而不是可执行文件呢?

我们有一个 .NET DLL,它是 SQL Server 2005 的 CLR 扩展存储过程。目前它与平台无关。从 64 位 Windows 上运行的 32 位 SQL Server 实例调用扩展存储过程时会发生什么?

【问题讨论】:

    标签: .net 64-bit 32-bit platform-agnostic


    【解决方案1】:

    这取决于程序集的编译目标。如果您在项目构建选项中选择“任何 CPU”或“x86”,则 DLL 应作为 32 位实例运行。如果您选择“x64”,它将引发异常(内存中的 BadImageFormatException)。

    在 Windows 下,32 位进程无法加载 64 位 DLL,因此 SQL Server 将在其进程内运行 32 位版本的 .net 运行时。因此,即使在 64 位机器上,您的 .net 程序集也将作为 32 位运行。

    【讨论】:

      猜你喜欢
      • 2014-04-11
      • 2017-07-17
      • 2011-07-07
      • 1970-01-01
      • 2013-08-29
      • 2012-04-29
      • 1970-01-01
      • 2015-08-13
      • 2018-04-20
      相关资源
      最近更新 更多