如何在32位模式下编译WCF服务库?

Con*_*ngo 11 wcf

我可以从基于x86的项目中引用Matlab代码,但不能从x64项目引用.

我可以将WCF服务构建为"任何CPU",但不是x86.当我尝试仅构建为x86时,它会出现以下错误:

---start error---
System.BadImageFormatException: Could not load file or assembly 'file:///D:\backtest\WcfServiceLibrary.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format.
---end error---
Run Code Online (Sandbox Code Playgroud)

因此,我陷入困境:我如何通过WCF提供Matlab调用?它就像一些奇怪的开发者XOR形式.

关于如何(a)以32位模式编译WCF服务库,或(b)解决问题的任何想法?

我有Win7 x64,MSVS 2010.

Str*_*tch 26

您的问题实际上是WCF测试客户端抱怨您的WCF服务库是32位.这是因为默认情况下,WCF测试客户端始终以64位模式运行.

我在此博客上找到以下步骤,使WCF测试客户端以32位模式运行 - 因此您将看不到您发布的错误.

  1. 将WcfSvcHost.exe和WcfTestClient.exe从C:\ program files(x86)\ Microsoft Visual Studio 10.0\Common7\IDE复制到本地目录.当然,请保留此文件的备份副本.
  2. 启动Visual Studio 2010命令提示符(开始菜单中的一个链接 - > Visaul Studio 2010)
  3. "cd"到您的WcfSvcHost副本所在的目录.

  4. 执行命令"corflags/32BIT +/FORCE WcfSvcHost.exe"

  5. 执行命令"corflags/32BIT +/FORCE WcfTestClient.exe"

  6. 将文件复制回您找到的位置.

现在您的WcfSvcHost和WcfTestClient将以32位模式运行,您将不会收到错误


Sea*_*ett 9

WcfServiceLibrary是一个DLL,因此应该构建为"任何CPU".只有托管所有其他DLL的EXE项目需要根据需要标记为"x86"或"x64".在这种情况下哪个项目是EXE?