Monday, April 5, 2010

Side by Side execution of Microsoft.Practices.ObjectBuilder 1.0.51205.0 and 1.0.51206.0

Although I do not intend on using this blog for programming notes, the following note is too important to leave in the ether.  I have many interests, but this entry is for frustrated programmers trying to deal with Microsoft Development, .NET, Microsoft Programming, Microsoft.Practices.ObjectBuilder, dependentAssembly, Side by side, Microsoft.Practices.ObjectBuilder.dll, Microsoft.Practices.EnterpriseLibrary issues.

I spent 10-15 hours to resolve this problem, so it is definitely worth sharing.


When MS upgraded Microsoft.Practices.ObjectBuilder.dll to version 1.0.51206.0, they had a few bugs. One bug was that the 1.0.51205.0 revision increment was not updated, so between version 3.0 and 3.1 there 2 versions with the same revision number.


The key to the side by side execution is as follows:

1. put the version 1.0.51206.0 version in the BIN

2. create a separte bin folder (bin_6_0_3_0 in my app) to hold the previous version of the Microsoft.Practices.ObjectBuilder.dll

3. In the web.config, add dependentAssembly references with both a publickeytoken=null and one with the publickeytoken=443a159333f77b8c

4. be sure your configSections section name dataConfiguration for the Microsoft.Practices.EnterpriseLibrary.Data has a publickeytoken=null


Your implementation may have some additional complications, but now you have avoided recompiling the entire Microsoft.Practices.EnterpriseLibrary.

<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;Bin_6_0_3_0"/>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.ObjectBuilder" Culture="neutral" publicKeyToken="443a159333f77b8c"/>
<codeBase version="1.0.51205.0" href="Bin_6_0_3_0\Microsoft.Practices.ObjectBuilder.dll"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.ObjectBuilder" Culture="neutral" publicKeyToken="null"/>
<codeBase version="1.0.51205.0" href="Bin_6_0_3_0\Microsoft.Practices.ObjectBuilder.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>

ShareThis

Ads

LinkWithin

Related Posts Plugin for WordPress, Blogger...