我使用Visual Studio 2010开发了一个Windows服务应用程序,以便集成两个应用程序。
在我的WinService中,我调用目标应用程序开发人员提供的一些API DLL文件,以便在从源应用程序获取该信息后在目标应用程序中创建一些信息。
所以我的Windows服务就像一些中间件应用程序一样。
当我运行该服务时,我收到以下错误:
System.BadImageFormatException: Could not load file or assembly 'Interop.ErpBS800, Version=8.5.0.0, Culture=neutral, PublicKeyToken=e076e239d0e78a42' or one of its dependencies. An attempt was made to load a program with an incorrect format.
File name: 'Interop.ErpBS800, Version=8.5.0.0, Culture=neutral, PublicKeyToken=e076e239d0e78a42'
at MaeilKitWintouch.Primavera.CreateDocument(Facturas fac)
at MaeilKitWintouch.MaeilKitWintouch.ExecuteRequest()
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
在我的Windows 7 x86笔记本电脑中,一切都运行良好,但在Windows Small Business Server 2011 Essentials 64位中,我收到了该错误。
我有PLATFORM TARGET =任何CPU和TARGET FRAMEWORK = .NET 4.
答案 0 :(得分:4)
您的应用程序可能正在以64位模式运行(这是允许的,因为您将平台目标设置为任何CPU )并尝试加载32位库。
博客帖子 Compiling .NET for a Specific Target Platform (Any CPU vs x86 vs x64) 对此进行了总结。
答案 1 :(得分:0)
我对这个错误的解决方案有点不同,经过4天的平台战争后,如果我改为x86 / x64,我会遇到同样的错误....
我做的是: