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.

Foi útil?

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.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top