Deploying versioned class library assembly in BizTalk is not straightforward process. The major problem is the BizTalk loads assemblies based upon the data stored in BizTalk management database instead of the manifest in assembly. Even if you sign the class library assembly and register it in the GAC, the end point such as orchestration or rule engine still could fail to locate it. Here is a typical error message you could see in the Event Log:
Could not load file or assembly ‘YourAssemblyName, Version=1.1.0.0, Culture=neutral, PublicKeyToken=64aa36518e843890′ or one of its dependencies. The system cannot find the file specified.
One of approach I used to solve this problem is to modify BTSNTSvc.exe.config in the C:\Program Files\Microsoft BizTalk Server 2006\, then add a couple of lines xml content to redirect assembly from old version to new version. Let’s see if you have a class library assembly called “YouClassLibraryAssemblyName”, the old version is 1.1.0.0, the new version is 1.1.1.0, you can specify the bindingRedirect like this.
<?xml version=”1.0″ ?>
<configuration>
<runtime>
<assemblyBinding xmlns=”urn:schemas-microsoft-com:asm.v1″>
<probing privatePath=”BizTalk Assemblies;Developer Tools;Tracking;Tracking\interop” />
<dependentAssembly>
<assemblyIdentity name=”YourClassLibraryAssemblyName”
publicKeyToken=”64aa36518e843890″
culture=”neutral” />
<bindingRedirect oldVersion=”1.1.0.0″
newVersion=”1.1.1.0″/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Thanks for this post. I had the issue with same version of the assembly deployed to GAC, but the event log is complaining that it is unable to load the assembly.
I had to restart the Host instance to get this to work. Hopefully it helps.