Resolving .NET assembly reference to a different name?

My project references Library1.dll and Library2.dll . Library2.dll has a dependency on Library1.dll , but it was compiled to reference it by a different name, Library1.Net40.dll .

Is there an nice way tell my application to redirect all references for Library1.Net40.dll to resolve to Library1.dll ? Maybe something similar to the way you can redirect versions using a <bindingRedirect>?

I've got a solution that handles the AppDomain.AssemblyResolve event, but it's a bit of a hack and am hoping there's a better way to do this.

Edit: For anyone's reference, here's how I ended up solving it using the AppDomain.AssemblyResolve event to redirect to a different assembly.


Have you tried playing with the <codeBase> element?

<configuration>
   <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="Library1.Net40"
                              publicKeyToken="..."
                              culture="neutral" />
            <codeBase version="2.0.0.0"
                      href="Library1.dll"/>
         </dependentAssembly>
      </assemblyBinding>
   </runtime>
</configuration>

(Untested; no idea if it works.)

CF: Am putting this update here, because it's a bit long for the comments :)

Good idea, thanks. I got the redirect working but it complains because the names are different, here's the log:

LOG: Attempting download of new URL file:///C:/Project/bin/Library1.dll.
LOG: Assembly download was successful. Attempting setup of file: C:ProjectbinLibrary1.dll
LOG: Entering download cache setup phase.
LOG: Assembly Name is: Library1, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
WRN: Comparing the assembly name resulted in the mismatch: NAME
ERR: The assembly reference did not match the assembly definition found.
ERR: Setup failed with hr = 0x80131040.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
链接地址: http://www.djcxy.com/p/49000.html

上一篇: MySQL:如何加载固定的数据

下一篇: 将.NET程序集引用解析为不同的名称?