我正在尝试创建一个Web服务,其中的函数由64位DLL执行。当我尝试构建此服务时,我收到错误“尝试加载格式不正确的程序”。 但是,当我运行32位DLL时,它工作正常。
我正试图在C#
的.net 4框架上的visual studio 2012中运行我尝试更改IIS中的应用程序池设置,并将构建平台目标更改为任何cpu。无法确定问题的来源。请为您提供帮助。谢谢
答案 0 :(得分:2)
右键单击您正在使用的应用程序池,然后转到Advanced Settings
。在(General)
下,有一个名为Enable 32-Bit Applications
的设置。如果您在64位操作系统上运行并且设置为true
,则应用程序池将是32位进程,因此您的64位DLL将无法加载。将其设置为false
,使您的应用池成为64位进程。
另外,请检查您正在构建的DLL的依赖关系是否为64位。它可能使用32位dll /汇编。如果您的代码中有任何[DllImport]
属性,请查看它们引用的.dll并确保它们是64位兼容的。
答案 1 :(得分:0)
如果您的Web服务引用64位dll,则必须将其编译为x64
答案 2 :(得分:0)
尽量不要将AnyCPU编译与32位或64位DLL混合(DLL可以编译为32位或64位或两者兼有) - 行为将取决于平台,在某些环境中它会起作用,有些则不行。