`bindingRedirect` doesn't work

-2

I have a trouble with some nugets dependency. This exception is throw

Impossible to load the file or assembly 'System.IO.Abstractions, Version=2.1.0.199, Culture=neutral, PublicKeyToken=96bf224d23c43e59'
File not found

My project require ton package A and B. A require System.IO.Abstractions>=2.1.0.199 and B require System.IO.Abstractions>=2.1.0.208. So the dependency solver download the version 208 and add a bindingRedirect to my app.config

My app.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.IO.Abstractions" publicKeyToken="96bf224d23c43e59" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-2.1.0.208" newVersion="2.1.0.208" />
        </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

But the bindingRedirect seems to not working. So do you have any idea about that ?

Thanks in advance for your help

Edit: The log from Fuslogvw (in french for now, I search how get it in english)

*** Entrée du journal Binder d'assembly  (23/07/2018 @ 10:06:28) ***

L'opération a réussi.
Résultat de liaison : hr = 0x0. L'opération a réussi.

Gestionnaire des assemblys chargé à partir de :  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Exécution sous l'exécutable  J:\sources\myApp\Output\Debug_msvc2015_x64\app.exe
--- Un journal des erreurs détaillé suit. 

=== Informations d'état de liaison préalable ===
JRN : DisplayName = System.IO.Abstractions, Version=2.1.0.208, Culture=neutral, PublicKeyToken=96bf224d23c43e59
 (Fully-specified)
JRN : Appbase = file:///J:/sources/myApp/Output/Debug_msvc2015_x64/
JRN : PrivatePath initial = NULL
JRN : base dynamique = NULL
JRN : base de cache = NULL
JRN : AppName = app.exe
Assembly appelant : myDll, Version=2019.0.0.51, Culture=neutral, PublicKeyToken=null.
===
JRN : cette liaison démarre dans le contexte de chargement de LoadFrom.
AVT : l'image native ne sera pas détectée dans le contexte LoadFrom. Elle sera détectée uniquement dans le contexte de chargement par défaut, comme pour Assembly.Load().
JRN : aucun fichier de configuration de l'application n'a été trouvé.
JRN : utilisation du fichier de configuration d'hôte : 
JRN : utilisation du fichier de configuration de l'ordinateur à partir de C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
JRN : référence post-stratégie : System.IO.Abstractions, Version=2.1.0.208, Culture=neutral, PublicKeyToken=96bf224d23c43e59
JRN : échec de la recherche dans le GAC.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/Output/Debug_msvc2015_x64/System.IO.Abstractions.DLL.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/Output/Debug_msvc2015_x64/System.IO.Abstractions/System.IO.Abstractions.DLL.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/Output/Debug_msvc2015_x64/System.IO.Abstractions.EXE.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/Output/Debug_msvc2015_x64/System.IO.Abstractions/System.IO.Abstractions.EXE.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/EwAddIns/myDll/bin/x64/Debug/System.IO.Abstractions.DLL.
JRN : le téléchargement de l'assembly a réussi. Tentative d'installation du fichier : J:\sources\myApp\EwAddIns\myDll\bin\x64\Debug\System.IO.Abstractions.dll
JRN : entrée dans la phase d'installation à exécution à partir de la source.
JRN : le nom de l'assembly est : System.IO.Abstractions, Version=2.1.0.208, Culture=neutral, PublicKeyToken=96bf224d23c43e59
JRN : le code base de liaison Where-ref ne correspond pas à ce qui est trouvé dans le contexte par défaut. Conservez le résultat dans le contexte LoadFrom.
JRN : la liaison a réussi. Elle retourne un assembly à partir de J:\sources\myApp\EwAddIns\myDll\bin\x64\Debug\System.IO.Abstractions.dll.
JRN : l'assembly est chargé dans le contexte de chargement LoadFrom.


*** Entrée du journal Binder d'assembly  (23/07/2018 @ 10:06:28) ***

L'opération a échoué.
Résultat de liaison : hr = 0x80070002. Le fichier spécifié est introuvable.

Gestionnaire des assemblys chargé à partir de :  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Exécution sous l'exécutable  J:\sources\myApp\Output\Debug_msvc2015_x64\app.exe
--- Un journal des erreurs détaillé suit. 

=== Informations d'état de liaison préalable ===
JRN : DisplayName = System.IO.Abstractions, Version=2.1.0.199, Culture=neutral, PublicKeyToken=96bf224d23c43e59
 (Fully-specified)
JRN : Appbase = file:///J:/sources/myApp/Output/Debug_msvc2015_x64/
JRN : PrivatePath initial = NULL
JRN : base dynamique = NULL
JRN : base de cache = NULL
JRN : AppName = app.exe
Assembly appelant : UnifiedLogin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
JRN : cette liaison démarre dans le contexte de chargement de LoadFrom.
AVT : l'image native ne sera pas détectée dans le contexte LoadFrom. Elle sera détectée uniquement dans le contexte de chargement par défaut, comme pour Assembly.Load().
JRN : aucun fichier de configuration de l'application n'a été trouvé.
JRN : utilisation du fichier de configuration d'hôte : 
JRN : utilisation du fichier de configuration de l'ordinateur à partir de C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
JRN : référence post-stratégie : System.IO.Abstractions, Version=2.1.0.199, Culture=neutral, PublicKeyToken=96bf224d23c43e59
JRN : échec de la recherche dans le GAC.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/Output/Debug_msvc2015_x64/System.IO.Abstractions.DLL.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/Output/Debug_msvc2015_x64/System.IO.Abstractions/System.IO.Abstractions.DLL.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/Output/Debug_msvc2015_x64/System.IO.Abstractions.EXE.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/Output/Debug_msvc2015_x64/System.IO.Abstractions/System.IO.Abstractions.EXE.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/EwAddIns/myDll/bin/x64/Debug/System.IO.Abstractions.DLL.
JRN : le téléchargement de l'assembly a réussi. Tentative d'installation du fichier : J:\sources\myApp\EwAddIns\myDll\bin\x64\Debug\System.IO.Abstractions.dll
JRN : entrée dans la phase d'installation à exécution à partir de la source.
JRN : le nom de l'assembly est : System.IO.Abstractions, Version=2.1.0.208, Culture=neutral, PublicKeyToken=96bf224d23c43e59
AVT : la comparaison du nom de l'assembly a entraîné l'incompatibilité : Numéro de révision
ERR : la référence d'assembly ne correspond pas à la définition d'assembly trouvée.
ERR : la phase d'installation à exécution à partir de la source a échoué avec hr = 0x80131040.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/EwAddIns/myDll/bin/x64/Debug/System.IO.Abstractions/System.IO.Abstractions.DLL.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/EwAddIns/myDll/bin/x64/Debug/System.IO.Abstractions.EXE.
JRN : tentative de téléchargement de la nouvelle URL file:///J:/sources/myApp/EwAddIns/myDll/bin/x64/Debug/System.IO.Abstractions/System.IO.Abstractions.EXE.
JRN : toutes les URL recherchées ont été tentées et ont échoué.
c#
nuget
app-config
asked on Stack Overflow Jul 23, 2018 by David • edited Jul 23, 2018 by David

1 Answer

1

Ok, I found the solution. I my case where the C# ddl is an addin of C++ software (so dynamically loaded) The config should be name as the software name (softwarename.exe.config) and the put next to the executable. Not in the working dir, not with the dll. That will probably create trouble when multiple addin will be deployed in the same times. So great thanks to @HansPassant for help.

answered on Stack Overflow Jul 24, 2018 by David

User contributions licensed under CC BY-SA 3.0