Resolução da referência de montagem .NET a um nome diferente?
-
27-09-2019 - |
Pergunta
Meu projeto referências Library1.dll e Biblioteca2.dll. Biblioteca2.dll tem uma dependência de Library1.dll, mas foi compilado para fazer referência a um nome diferente, Library1.net40.dll.
Existe uma boa maneira de dizer ao meu aplicativo para redirecionar todas as referências para Library1.net40.dll para resolver Library1.dll? Talvez algo semelhante à maneira como você pode redirecionar versões usando umu003CbindingRedirect> ?
Eu tenho uma solução que lida com o AppDomain.ASSEMBLYRESOLVE Evento, mas é um pouco de hack e espero que haja uma maneira melhor de fazer isso.
Editar: para a referência de qualquer pessoa, aqui está como eu acabei resolvendo -a usando o Evento AppDomain.ASSEMBLYRESOLVE para redirecionar para uma montagem diferente.
Solução
Você já tentou brincar com o u003CcodeBase>elemento?
<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>
(Não testado; não faço ideia se funciona.)
CF: Estou colocando esta atualização aqui, porque é um pouco longo para os comentários :)
Boa ideia, obrigado. Eu tenho o redirecionamento funcionando, mas reclama porque os nomes são diferentes, aqui está o log:
LOG: Attempting download of new URL file:///C:/Project/bin/Library1.dll. LOG: Assembly download was successful. Attempting setup of file: C:\Project\bin\Library1.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.