#.net #visual-studio #.net-assembly #app-config
Вопрос:
У меня много проектов, которые генерируют библиотеки DLL, и основной проект, который генерирует исполняемый файл, сегодня я успешно скомпилировал проекты, но когда я попытался запустить основной проект, я впервые получил следующее исключение: «Определение манифеста сборки не соответствует ссылке на сборку», поэтому я не в первый раз перекомпилирую проекты и выполняю основной без проблем, но теперь я получаю эту ошибку.
После проверки исключения я смог найти «bindingredirect» в app.config, который его вызывает, я проверил более старые версии системы, и дело в том, что эта «bindignredirect» всегда существовала в app.config, но эта ошибка никогда не возникала раньше, если я прокомментирую строку bindingredirect, основной проект запускается без проблем.
Все проекты имеют .net 3.5 в качестве целевой версии .net, что может вызвать это? Что могло измениться так, чтобы bindingredirect теперь выполнялся?
Раздел App.config
<!-- Habilita el debug just-in-time. -->
<system.windows.forms jitDebugging="true" />
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Componentes" publicKeyToken="BB48DC83EB7CD949" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.1.17726" newVersion="1.0.1.17261" />
</dependentAssembly>
</assemblyBinding>
</runtime>
FusionLog внутреннего исключения
=== Información de estado anterior al enlace ===
LOG: Usuario = ymora
LOG: DisplayName = Componentes, Version=1.0.1.17265, Culture=neutral, PublicKeyToken=bb48dc83eb7cd949
(Fully-specified)
LOG: Appbase = file:///E:/Yerald Mora/Documents/SISTEMAS/Principal/bin/
LOG: PrivatePath inicial = NULL
Ensamblado de llamada : Principal, Version=1.0.1.27092, Culture=neutral, PublicKeyToken=c078d737fbb55d54.
===
LOG: Este enlace empieza en el contexto de carga default.
LOG: Utilización del archivo de configuración de la aplicación: E:Yerald MoraDocumentsSISTEMASPrincipalbinPrincipal.vshost.exe.config
LOG: Utilizando el archivo de configuración del equipo en C:WindowsMicrosoft.NETFramework64v2.0.50727configmachine.config.
LOG: Redirección detectada en el archivo de configuración de aplicaciones: 1.0.1.17265 se redirigió a 1.0.1.17261.
LOG: Referencia posterior a la directiva: Componentes, Version=1.0.1.17261, Culture=neutral, PublicKeyToken=bb48dc83eb7cd949
LOG: Ya se detectó el mismo enlace, que generó un error hr = 0x80131040.
Ответ №1:
Проводя тесты со старыми версиями системы, я понял, что номера версий для dll, в номере редакции, когда-либо начинались с числа выше 17, например 1.0.1.18463, и в этом была проблема!…, в app.config следующая строка устанавливает, что любая версия между 0.0.0.0 и 1.0.1.17726 должна быть перенаправлена на 1.0.1.17261
<bindingRedirect oldVersion="0.0.0.0-1.0.1.17726" newVersion="1.0.1.17261" />
В журнале слияния исключения InnerException следующая строка показывает, что dll версии 1.0.1.17265 была перенаправлена на 1.0.1.17261
LOG: Redirección detectada en el archivo de configuración de aplicaciones: 1.0.1.17265 se redirigió a 1.0.1.17261.
Поэтому, когда я скомпилировал проект, visual studio сгенерировала номер редакции 17265, этот был в диапазоне, установленном в appconfig, поэтому причина, по которой я работал раньше, не вызывала проблем, потому что номер редакции всегда находился за пределами диапазона, установленного в свойстве bindingredirect appconfig