Mandatory redirection does not work in a test project

Using binding redirection in app.config test project. Runtime refuses to obey the redirection command and continues to search for the old version of the assembly

<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Msdcc.Common" publicKeyToken="9d9c15280f7f1425"/> <bindingRedirect oldVersion="0.0.0.0-2.4.0.0" newVersion="2.4.0.0"/> </dependentAssembly> </assemblyBinding> </runtime> 

Well, I heard about the problems of creating a default namespace (from very wise people), so I added "xmlns =" ​​urn: schemas-microsoft-com: asm.v1 ". I tried to run a test case, still not. Open system Fusion Log Viewer tested the problem and wonders of surprise until it searches for the old dll.The really useful message below was decrypted using this message http://msdn.microsoft.com/en-us/magazine/dd727509.aspx

 *** Assembly Binder Log Entry (28/07/2010 @ 18:59:36) *** The operation failed. Bind result: hr = 0x80131040. No description available. Assembly manager loaded from: C:\WINNT\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll Running under executable C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe --- A detailed error log follows. === Pre-bind state information === LOG: User = BELGACOM\id820374 LOG: DisplayName = Msdcc.Common, Version=2.2.0.0, Culture=neutral, PublicKeyToken=9d9c15280f7f1425 (Fully-specified) LOG: Appbase = file:///c:/data/source/explorev1/explore.root/explore/euc.explore.domainobjectstest/bin/debug LOG: Initial PrivatePath = NULL LOG: Dynamic Base = NULL LOG: Cache Base = NULL LOG: AppName = NULL Calling assembly : (Unknown). === LOG: This is an inspection only bind. LOG: Using application configuration file: c:\data\source\explorev1\explore.root\explore\euc.explore.domainobjectstest\bin\debug\euc.explore.domainobjectstest.dll.config LOG: Using machine configuration file from C:\WINNT\Microsoft.NET\Framework\v2.0.50727\config\machine.config. LOG: GAC Lookup was unsuccessful. LOG: Attempting download of new URL file:///c:/data/source/explorev1/explore.root/explore/euc.explore.domainobjectstest/bin/debug/Msdcc.Common.DLL. LOG: Assembly download was successful. Attempting setup of file: c:\data\source\explorev1\explore.root\explore\euc.explore.domainobjectstest\bin\debug\Msdcc.Common.dll LOG: Entering run-from-source setup phase. LOG: Assembly Name is: Msdcc.Common, Version=2.4.0.0, Culture=neutral, PublicKeyToken=9d9c15280f7f1425 WRN: Comparing the assembly name resulted in the mismatch: Minor Version ERR: The assembly reference did not match the assembly definition found. ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated. 

My Though Process

This made me wonder why it still does not redirect the assembly if the link is present in my configuration file.

So, newbie, what I just decided, I will do what the old man told me, and delete the namespace declaration from the configuration item, and it tried to work. xmlns = "http://schemas.microsoft.com/.NetConfiguration/v2.0"

My Question is after this very long story from what I understand, namespace declarations should only mess with Intellisense, why does it spin with assembly binding?

+6
c # binding assemblies
source share
1 answer

Loading the assembly into the Reflection load context by design ignores the publisher policy and the link redirection policy. Junfeng Zhang explores why this is on his excellent blog.

A similar question is asked here: Can I use Assembly.ReflectionOnlyLoad with the publisher policy / version of the assembly?

+3
source share

All Articles