我知道平台无关的.NET应用程序“浮动”到操作系统的位数。但是,从非.NET应用程序调用的.NET程序集是一个库,而不是可执行文件呢?
我们有一个.NET DLL,它是SQL Server 2005的CLR扩展存储过程。目前它与平台无关。从64位Windows上运行的32位SQL Server实例调用扩展存储过程时会发生什么?
答案 0 :(得分:1)
这取决于编译程序集的目标。如果在项目构建选项中选择“任何CPU”或“x86”,则DLL应作为32位实例运行。如果您选择“x64”,它将抛出异常(内存中的BadImageFormatException)。
在Windows下,32位进程无法加载64位DLL,因此SQL Server将在其进程内运行32位版本的.net运行时。因此,即使在64位计算机上,您的.net程序集也将以32位运行。