== MaestroAPI and !MapGuideDotNetApi with !LocalNative connections == This document describes how to use the !MapGuideDotNetApi with [wiki:maestro MapGuide Maestro] API. == Why all the trouble == The MaestroAPI is signed with a !StrongName key, so you can use it in both strong name signed applications as well as non-signed applications. If you use the !LocalNative connection, Maestro uses the !MapGuide binaries to connect to !MapGuide. Each version of !MapGuide has a new version of the !MapGuideDotNetApi, which is often not signed, and usually changes version numbers. This makes it difficult to use with MaestroAPI, as it is compiled with a reference to a signed !MapGuideDotNetApi. == What to do == To work with another version than the one MaestroAPI was compiled for, you need a signed version of the !MapGuideDotNetApi and a bindingRedirect. == How to obtain the signed version of !MapGuideDotNetApi == If you are targeting a main release of !MapGuide, there may be a ready made !MapGuideDotNetApi.dll here: [http://trac.osgeo.org/mapguide/browser/trunk/Tools/Maestro/MaestroAPI/Signer/SignedVersions] If you the version you need is not listed, you can sign the one you have, using this commandline: {{{ signer.exe -k maestroapi.key -outdir .\out -a MapGuideDotNetApi.dll }}} The maestroapi.key is also avalible from the above link. Signer.exe is from the [http://www.codeplex.com/Signer Signer project]. If your !MapGuideDotNetApi.dll is already signed, you need to play tricks with Signer, or simply build the dll from the !MapGuide source. == How to use bindingRedirect == As MaestroAPI is compiled with a reference to a certain version of !MapGuideDotNetApi, you cannot just update the dll. Microsoft MSDN has a description of [http://msdn.microsoft.com/en-us/library/7wd6ex19%28VS.80%29.aspx the problem and solution]. Basically you place a configuration file with the same name as your executable. For web applications, the file must be named web.config. Example: {{{ MyApplication.exe MyApplication.exe.configuration }}} There is a sample config file with the [http://trac.osgeo.org/mapguide/browser/trunk/Tools/Maestro/MaestroAPI/Signer/SignedVersions pre-signed dll's] You simply add a xml element stating the new version to bind to, eg: {{{ }}} You can then replace the !MapGuideDotNetApi dll with the one with the new version number. An optional step is to also point to the correct file. You must do this is the new file is not named !MapGuideDotNetApi.dll: {{{ }}} Unfortunately the href path must be absolute. == RFC68 == If you use MapGuide Open Source 2.2 or MapGuide Enterprise 2011 or newer releases, the above instructions won't work due to RFC68 splitting MapGuideDotNetApi.dll into 5 separate assemblies. These new releases still work, the process in signing these assemblies is slightly different. Updated instructions can be found here: http://themapguyde.blogspot.com/2010/10/using-maestro-in-native-mode-with.html