`bindingRedirect`不起作用

时间:2018-07-23 09:01:01

标签: c# nuget app-config

我对一些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.199,而B要求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é.

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案。 我的情况是C#ddl是C ++软件的插件(因此是动态加载的) 配置名称应为软件名称(softwarename.exe.config),并在可执行文件旁边放置。不在工作目录中,而不是在dll中。当同时部署多个插件时,可能会造成麻烦。 非常感谢@HansPassant的帮助。