Issue
- Loading a custom powerGateServer plugin build for the platform x86 fails with following exception:
[powerGateServer.Core.PluginFramework.PluginManager] - Failed to load plugin: Some32BitPlugin System.BadImageFormatException: Could not load file or assembly 'Some32BitPlugin.dll' or one of its dependencies. is not a valid Win32 application. (Exception from HRESULT: 0x800700C1) Filename: "Plugin32Bit.dll" at System.Reflection.RuntimeAssembly.nLoadFile(String path, Evidence evidence) at System.Reflection.Assembly.LoadFile(String path) at powerGateServer.Core.PluginFramework.AssemblyPlugin.�() at powerGateServer.Core.PluginFramework.AssemblyPlugin.�() at powerGateServer.Core.PluginFramework.AssemblyPlugin.LoadImpl() at powerGateServer.Core.PluginFramework.Plugin.Load() at powerGateServer.Core.PluginFramework.PluginManager.TryLoadPlugin(Plugin plugin)
- When the plugin is build with AnyCPU but it references some x86 third party assembly the plugin gets loaded but requests to the custom services fail with following response:
{ "error": { "code": "", "message": { "lang": "en-US", "value": "Internal Server Error! Could not load file or assembly \"file:///C:\\ProgramData\\coolOrange\\powerGateServer\\Plugins\\HelloWorldPlugin\\SomeThirdParty32BitAssembly.dll\" or one of its dependencies. An attempt was made to load a program with an incorrect format." }, "innererror": { "message": "Could not load file or assembly \"file:///C:\\ProgramData\\coolOrange\\powerGateServer\\Plugins\\HelloWorldPlugin\\SomeThirdParty32BitAssembly.dll\" or one of its dependencies. An attempt was made to load a program with an incorrect format.", "type": "System.BadImageFormatException", "stacktrace": " at Plugin32Bit.Entities.Developer..ctor()\r\n at Plugin32Bit.Developers.Query(IExpression`1 expression) in c:\\Users\\coolOrange\\Documents\\Visual Studio 2012\\Projects\\HelloWorldPlugin\HelloWorld\\HelloWorldServices.cs:Zeile 11.\r\n at powerGateServer.Core.WcfFramework.Internal.QueryProviderSdkAdapter`1.Execute(Expression expression)" } } }
Cause
The BadImageFormatException is thrown because powerGateServer is running as 64-bit processes, but the plugin itself (or a referenced assembly) targets the platform x86 instead!
It is not possible to use 32-bit assemblies in 64-bit processes or vice versa.
Solution
To be able to still use the plugin there are multiple possibilities:
- Make sure to set the Platform target property in the Visual Studio project of the plugin to AnyCPU and recompile it.
- Use a AnyCPU or 64-bit version of the referenced assemblies.
Contact the third party assembly provider and recompile your plugin using the AnyCPU or x64 version of the references.
- Contact support@coolorange.com for a 32-bit version of powerGateServer that can be installed on a 64-bit and 32-bit Windows environments.
Please keep in mind that the 32-bit version is not tested and not supported!
See Also
powerGateServer installation (coolOrange Wiki)
powerGateServer Change Logs (coolOrange Wiki)