`bindingRedirect` 不起作用

`bindingRedirect` doesn't work

我对一些 nugets 依赖有问题。 此异常抛出

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

我的项目需要吨包 ABA 需要 System.IO.Abstractions>=2.1.0.199B 需要 System.IO.Abstractions>=2.1.0.208。所以依赖解决器下载版本 208 并添加一个 bindingRedirect 到我的 app.config

我的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>

但是 bindingRedirect 似乎不起作用。 那么你对此有什么想法吗?

提前感谢您的帮助

编辑: 来自 Fuslogvw 的日志(现在是法语,我搜索如何用英语获取它)

*** 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# ddl 是 C++ 软件的插件(因此动态加载) 配置的名称应为软件名称 (softwarename.exe.config) 和可执行文件旁边的 put。不在工作目录中,不在 dll 中。当同时部署多个插件时,这可能会造成麻烦。 非常感谢@HansPassant 的帮助。