I was going to deploy some plugins to a server today and when I tried to connect to the CRM with the PlugingRegistration.exe I found got the following error:
Unhandled Exception: System.ServiceModel.FaultException: The server was unable to process the request due to an internal error.
So I switched on the tracing in CRM and read the following from the trace log (edited):
System.IO.FileNotFoundException, mscorlib, Version=18.104.22.168, Culture=neutral, PublicKeyToken=b77a5c561934e089
Could not load file or assembly ‘Microsoft.Xrm.Client, Version=22.214.171.124, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.
The error seems to originate from CRM not being able to find the Microsoft.Xrm.Client.dll file. After some fiddeling, I fixed it by copying the file from the SDKbin directory to CRMWebbin directory. It is a bit strange that it is required that you do this, and it will probably be fixed in future rollups of CRM 2011.
By the way, I heard some rumors from the CRM Statement of Direction that CRM 6 will be released Q2 2012 and that it will have multibrowser support. The feature we have all been waiting for, and it is probably going to be more or less the same thing as the 2011 version but with multibrowser support. So Software Assurance will probably be a good idea this year for Microsoft Dynamics CRM.
CEO, Chief Architect and co-Founder at CRM-konsulterna AB
Today I got involved in a project I havn’t been working in for about 2 years, a CRM 3 project that now was upgraded and there were some issues with callouts not executing properly on the production system but there were no problems on the test system. So, there probably wasn’t a code error.
After activating the crm tracing (alway a good thing to do when CRM is missbehavn’) it was quite clear that it couldn’t find the dll Microsoft.Crm.Platform.Callout.dll which of course is required by CRM 4 if you want to execute workflows since this assembly contains the classes that are inherited from in the callouts. It is a bit strange that this dll isn’t included in CRM 4 since callout are supposed to be seemlessly upgradable to CRM 4 and this is the one little stich that is missing. So, just had to dig it up and deploy it to the GAC and the callouts started working as they should.
During this I also thought there might be errors in with the assembly being unsigned and after some looking around, I found that in Visual Studio 2003 it isn’t found in the project settings so you have to fix it manually in the assemblyinfo.dll. However, this doesn’t seem necessary event though it doesn’t hurt.
So, what did I learn?
1. When in doubt, switch on CRM tracing.
2. Make sure you have a good store of all dll:s that CRM uses so that you quickly can find them. How many of you have the Microsoft.Crm.Platform.dll in the CRM 3 hosted version? It is quite rare and can be found on the installation disks but not anywhere on MSDN. If you need it, drop a comment. I approve all comments due to all the #¤#¤¤# comment spammers so you can enter your email and ask me not to publish the comment, and it wont be subject to email harvesters, if you want me to email you the file.
3. Don’t take promises of seemless upgradablity too serious. MSFT have done a great job with CRM, you don’t even have to recompile (and consider that CRM 3 uses .NET 1.1 and CRM 4 .NET 2.0 from an IIS perspective) so always do a test upgrade a couple of times before you do it live and make sure to write down all the steps you are taking. Let’s hope the upgrade from CRM 4 to CRM 5 will be truly seemless!
Microsoft Dynamics CRM Chief Architect