I am trying to upgrade Unity
to version (2.1.505.2), but when I run the application I get the following FileLoadException
Could not load file or assembly 'Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies.
We are upgrading from Unity 2.0.414.0 to 2.1.505.2.
gacutil -l
)I removed all Unity dlls from the archive. Double checked with powershell
PS C:\> ls -rec -inc Microsoft.Practices.Unity.dll | foreach-object { "{0}`t{1}" -f $_.FullName, [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_).FileVersion }
How can I find out what / who still refers to the Unity 2.0.414.0?
FusionLogVw doesn't tell me which DLL is causing the problem.
Any help is much appreciated!
The problem was another Microsoft dll that refers to the old version of unity. I found this out be accident be checking the namespaces of every referenced dll, and found another dll that contained namespaces with "unity".
Updating:
to latest released versions resolved the problem.
I hope I save the day for some lost soul out there who's also pulling his hair out over this issue... :)
The binding redirect should be pointed to a proper assembly version.
For your case version 2.1.505.0 should be used!
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>
2.1.505.2 cannot be specified because of next reason:
Unity assembly 2.1.505.2 has different versions specified in the AssemblyFileVersion and AssemblyVersion.
CLR is working with the AssemblyVersion and AssemblyFileVersion is ignored but NuGet is working with the AssemblyFileVersion!
So that's why you have this difference!
Please use AssemblyVersion
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With