1

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

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

4

1 回答 1

1

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

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

于 2009-02-16T05:03:44.507 回答