`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
我的项目需要吨包 A
和 B
。 A
需要 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é.
好的,我找到了解决方案。
我的情况是 C# ddl 是 C++ 软件的插件(因此动态加载)
配置的名称应为软件名称 (softwarename.exe.config) 和可执行文件旁边的 put。不在工作目录中,不在 dll 中。当同时部署多个插件时,这可能会造成麻烦。
非常感谢@HansPassant 的帮助。
我对一些 nugets 依赖有问题。 此异常抛出
Impossible to load the file or assembly 'System.IO.Abstractions, Version=2.1.0.199, Culture=neutral, PublicKeyToken=96bf224d23c43e59'
File not found
我的项目需要吨包 A
和 B
。 A
需要 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é.
好的,我找到了解决方案。 我的情况是 C# ddl 是 C++ 软件的插件(因此动态加载) 配置的名称应为软件名称 (softwarename.exe.config) 和可执行文件旁边的 put。不在工作目录中,不在 dll 中。当同时部署多个插件时,这可能会造成麻烦。 非常感谢@HansPassant 的帮助。