web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Microsoft Dynamics CRM (Archived)

How does the upgraded Dynamics CRM (MSCRM 2011 to MSCRM 2013) Solution work

(0) ShareShare
ReportReport
Posted on by

Dear Community

When we upgrade Dynamics CRM 2011 to CRM 2013 in place. All the supported custom code works as is. My question this custom code was written using old CRM SDK assemblies, which will not be found after an upgrade (example: Microsoft.CRM.SDK.Proxy.dll of version 5.0.Xx.XX was used to build this custom code but after upgrade version 6.0.XX.XXX would be found) How does the code work then. Why does it not complain with file not found exception.

*This post is locked for comments

I have the same question (0)
  • VarunD Profile Picture
    on at

    Dear Guido

    First of all, I want to thank you for your prompt replies.

    I understand that there is backward compatibility, however my question is older SDK DLLs are neither GAC'ed nor they are in the %programfiles%/Microsoft Dynamics CRM 2013/Server/Bin folder. Then from where the references are resolved during run time.

    I am puzzled by that.

    Thanks

    Varun

  • Suggested answer
    ScottDurow Profile Picture
    21 on at

    Hi,

    The reason that this works is that there are assembly re-directs in the config file for the new versions that redirect the .net runtime to load the new sdk assemblies even if the old ones are referenced at run-time:

    So for CRM2013 there is a redirect that loads the 6.0 version even if the 4 or 5 version is referenced when the plugin was compiled.

    <dependentAssembly>

           <assemblyIdentity name="Microsoft.Crm.Sdk" publicKeyToken="31bf3856ad364e35" culture="neutral" />

           <bindingRedirect oldVersion="4.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

         </dependentAssembly>

    Neat eh?!

    Hope this helps,

    Scott

  • VarunD Profile Picture
    on at

    That explains. Thanks a lot!

  • VarunD Profile Picture
    on at

    Hi Scott,

    In addition developers always reference Microsoft.Xrm.Sdk.dll, however redirects for this assembly are not specified in the config, how does this work?

    Thanks

    Varun

  • Suggested answer
    ScottDurow Profile Picture
    21 on at

    Yes - the SDK assembly is also redirected:

    <dependentAssembly>

           <assemblyIdentity name="Microsoft.Crm.Sdk" publicKeyToken="31bf3856ad364e35" culture="neutral" />

           <bindingRedirect oldVersion="4.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

         </dependentAssembly>

         <dependentAssembly>

           <assemblyIdentity name="Microsoft.Xrm.Sdk" publicKeyToken="31bf3856ad364e35" culture="neutral" />

           <bindingRedirect oldVersion="4.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

         </dependentAssembly>

         <dependentAssembly>

           <assemblyIdentity name="Microsoft.Xrm.Sdk.Workflow" publicKeyToken="31bf3856ad364e35" culture="neutral" />

           <bindingRedirect oldVersion="4.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

         </dependentAssembly>

         <dependentAssembly>

           <assemblyIdentity name="Microsoft.Crm.Sdk.Proxy" publicKeyToken="31bf3856ad364e35" culture="neutral" />

           <bindingRedirect oldVersion="4.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

         </dependentAssembly>

         <dependentAssembly>

           <assemblyIdentity name="Microsoft.Xrm.Sdk.Deployment" publicKeyToken="31bf3856ad364e35" culture="neutral" />

           <bindingRedirect oldVersion="4.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

         </dependentAssembly>

         <dependentAssembly>

           <assemblyIdentity name="Microsoft.Crm.Workflow" publicKeyToken="31bf3856ad364e35" culture="neutral" />

           <bindingRedirect oldVersion="4.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

         </dependentAssembly>

         <dependentAssembly>

           <assemblyIdentity name="Microsoft.Crm" publicKeyToken="31bf3856ad364e35" culture="neutral" />

           <bindingRedirect oldVersion="4.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

         </dependentAssembly>

  • VarunD Profile Picture
    on at

    Hi Scott

    I am amused, but I see only part of the configuration of what you have listed. Is there any other configuration file as well?

    This is what I have in my configuration file:

       <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

         <probing privatePath="PFiles\MSCRM\Setup;PFiles\MSCRM\Tools;PFiles\MSCRM\Server\bin;GAC;wwwroot\bin;Setup;Tools;sql\4.0\Bin;Reports"/>

         <dependentAssembly>

           <assemblyIdentity name="Microsoft.Crm"

               publicKeyToken="31bf3856ad364e35"

               culture="neutral" />

           <bindingRedirect oldVersion="4.0.0.0-6.0.0.0"

               newVersion="6.0.0.0"/>

         </dependentAssembly>

         <dependentAssembly>

           <assemblyIdentity name="Microsoft.Crm.Sdk"

            publicKeyToken="31bf3856ad364e35"

            culture="neutral" />

           <bindingRedirect oldVersion="4.0.0.0-6.0.0.0"

               newVersion="6.0.0.0"/>

         </dependentAssembly>

       </assemblyBinding>

     </runtime>

     <assemblyDependencies>

       <add key="MicrosoftCrmReportingDll"

            value="Reports\Microsoft.Crm.Reporting.dll" />

       <add key="MicrosoftCrmReportingServicesDll"

            value="Reports\Microsoft.Crm.ReportingServices.dll" />

       <add key="MicrosoftCrmObjectModelDll"

            value="GAC\Microsoft.Crm.ObjectModel.dll" />

       <add key="MicrosoftCrmPlatformSdkDll"

            value="GAC\Microsoft.Crm.Platform.Sdk.dll" />

       <add key="MicrosoftCrmMetadataHelperDll"

            value="GAC\Microsoft.Crm.MetadataHelper.dll" />

       <add key="MicrosoftCrmMetadataServiceDll"

            value="wwwroot\bin\Microsoft.Crm.MetadataService.dll" />

       <add key="MicrosoftCrmEntitiesDll"

            value="GAC\Microsoft.Crm.Entities.dll" />

       <add key="MicrosoftCrmSetupDiffBuilderDll"

            value="sql\4.0\Bin\Microsoft.Crm.Setup.DiffBuilder.dll" />

       <add key="MicrosoftCrmUpgradeCustomization"

            value="sql\4.0\Bin\Microsoft.Crm.Upgrade.Customization.dll" />

       <add key="MicrosoftCrmApplicationUpgrade"

            value="sql\4.0\Bin\Microsoft.Crm.DataUpgrade.dll" />

       <add key="MicrosoftCrmPlatformServer"

            value="GAC\Microsoft.Crm.Platform.Server.dll" />

       <add key="EnvironmentDiagnosticsChm"

            value="EnvironmentDiagnostics.chm" />

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Neeraj Kumar – Community Spotlight

We are honored to recognize Neeraj Kumar as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics CRM (Archived)

#1
SA-08121319-0 Profile Picture

SA-08121319-0 4

#1
Calum MacFarlane Profile Picture

Calum MacFarlane 4

#3
Alex Fun Wei Jie Profile Picture

Alex Fun Wei Jie 2

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans