Windows services 具有32位和64位DLL的windows服务

Windows services 具有32位和64位DLL的windows服务,windows-services,64-bit,Windows Services,64 Bit,我们有一个windows服务,它使用由一系列不同的.NET项目生成的DLL。其中一个项目依赖于在32位计算机上编译的dll 我们刚刚将windows服务移动到64位计算机上。默认情况下,.NET项目尝试作为64位程序集运行(因为它们在64位计算机上运行)。但是,通过将平台目标指定为“x86”而不是“任何CPU”,我可以强制单个项目作为32位程序集运行 我的问题是:是否所有的.NET项目都需要强制作为32位程序集运行?32位程序集和64位程序集可以一起运行吗 如果非托管DLL上没有不安全的代码和/

我们有一个windows服务,它使用由一系列不同的.NET项目生成的DLL。其中一个项目依赖于在32位计算机上编译的dll

我们刚刚将windows服务移动到64位计算机上。默认情况下,.NET项目尝试作为64位程序集运行(因为它们在64位计算机上运行)。但是,通过将平台目标指定为“x86”而不是“任何CPU”,我可以强制单个项目作为32位程序集运行


我的问题是:是否所有的.NET项目都需要强制作为32位程序集运行?32位程序集和64位程序集可以一起运行吗

如果非托管DLL上没有不安全的代码和/或引用,则可以使用目标CPU安全地编译所有内容

编译的结果是CPU无关的——结果IL是由目标机器上的CLR JIT编译的,不管机器是什么


如果长方体是64位长方体,它将由64位CLR编译为64位指令集,并将在本机64位模式下愉快地运行

如果非托管DLL上没有不安全的代码和/或引用,则您可以在任何CPU上使用目标安全地编译所有内容

编译的结果是CPU无关的——结果IL是由目标机器上的CLR JIT编译的,不管机器是什么


如果该框是64位框,它将被64位CLR编译为64位指令集,并将愉快地在本机64位模式下运行

我认为,只要您不使用本机模块或任何东西,您可能会很好,但如果您假定指针的大小等,代码中仍然可能存在错误

“如果您有100%类型安全的托管代码,那么您真的可以将其复制到64位平台并在64位CLR下成功运行。”


我认为,只要您不使用本机模块或任何东西,您可能就没事了,尽管如果您假设指针大小等,代码中仍然可能存在bug

“如果您有100%类型安全的托管代码,那么您真的可以将其复制到64位平台并在64位CLR下成功运行。”


其中一个参考是第三方dll,它在32位机器上似乎工作正常,但在64位机器上抛出错误。(即,我无法重新编译该Dll,也无法保证它是使用目标“任何CPU”编译的。)基本上,该解决方案在32位机器上运行良好,但在64位机器上apachefop.net抛出错误“无法加载文件或程序集”apachefop.netAn试图加载格式不正确的程序,我想知道我是否必须转换单个项目(具有依赖关系的项目)或者我是否必须转换解决方案中的每个项目。其中一个参考是第三方dll,它在32位机器上似乎工作正常,但在64位机器上抛出错误。(即,我无法重新编译该Dll,也无法保证它是使用目标“任何CPU”编译的。)基本上,该解决方案在32位机器上运行良好,但在64位机器上apachefop.net抛出错误“无法加载文件或程序集”apachefop.netAn试图加载格式不正确的程序,我想知道是必须转换单个项目(具有依赖关系的项目)还是必须转换解决方案中的每个项目。