Подтвердить что ты не робот

Расположенное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

После подписания сторонних собраний и добавления их в GAC я получаю следующую ошибку: также запись в журнале Binder Logging показывает эту ошибку

В нем говорится, что несоответствие сборок не является уверенным, как тупоуничтожение, когда я удалил все файлы obj и bin и пакетное построение приложения + реимпортировало DLL.

 Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\Program Files (x86)\Common Files\Microsoft Shared\DevServer\11.0\WebDev.WebServer40.exe

--- A detailed error log follows. 
=== Pre-bind state information ===
LOG: User = AKBARCA\user

LOG: DisplayName = ClubStarterKit.Core, Version=3.0.1.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)

LOG: Appbase = 

file:///C:/Users/user/Desktop/NhibernateMediumTrust/NhibernateMediumUpgrade/direct/clubstar

terkit v3 preview/ClubStarterKit.Web/

LOG: DEVPATH = C:\ProgramData\Red Gate\.NET Reflector\DevPath

LOG: Initial PrivatePath = 

C:\Users\user\Desktop\NhibernateMediumTrust\NhibernateMediumUpgrade\direct\clubstarterkit v3 preview\ClubStarterKit.Web\bin
Calling assembly : ClubStarterKit.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
4b9b3361

Ответ 1

Из моего опыта это происходит, как правило, после того, как вы опубликовали свое приложение и когда у вас разные версии пакетов nuget. Если это также будет вашей ситуацией, лучшим способом, который я нашел, чтобы исправить это, является щелчок правой кнопкой мыши по решению (а не отдельным проектам) и выберите "Управление пакетами Nuget". Затем найдите уязвимую сборку в установленных пакетах. Вероятно, вы увидите его несколько раз. Нажмите "Управление" на каждой из старых версий пакета и снимите флажок со всех ваших проектов. Как только в списке останется только последняя версия пакета. Нажмите "Управление" на этом и перепроверьте все проекты, которые нуждаются в пакете. Это существенно улучшит их все, чтобы использовать ту же версию пакета и должна решить вашу ошибку несоответствия.

Ответ 2

У меня возникла аналогичная проблема. В моем случае у меня было несколько проектов в моем решении.

Один из проектов ссылался на EntityFramework 4.0 и этот проект ссылался в другом проекте, который ссылался на EntityFramework 5.0. Я привел их в синхронизацию, и проблема исчезла.

Ответ 3

Hum... Я столкнулся с чем-то похожим с тем же сообщением об ошибке.

В моем случае я обновил вручную версию сборок.

The error message

В ссылочной сборке у меня была другая версия...

Итак, я обновил его в файле web.config.

Properies of the DLL

Это решило мою проблему.

Ваш === Pre-bind state information === кажется неполным. Как правило, это показывает выполнение, а последняя строка показывает ошибку, поэтому мы можем помочь только поделиться своим опытом. Пример: Last line of the LOG info

Я надеюсь, что кто-то другой, столкнувшийся с этой проблемой, найдет это полезным.

Ответ 4

В моем случае ошибка возникает, когда версия, указанная в web.config <bindingRedirect> зависимой сборки (например, Newtonsoft.Json), не соответствует версии, которая фактически находится в папке bin. После обновления номера версии в web.config проблема исправлена.

screenshot of web.config

Ответ 5

Когда я столкнулся с этой проблемой в прошлом, я удалил всю проектную dll из gac, перестроил решение, затем сделал iisreset и был решен.

Ответ 6

Я получил эту ошибку, используя FASTjson:

_jsonConfig = fastJSON.JSON.ToObject<jsonConfig>(jsonConfigFileContents);

В этой строке это не удалось:

Type t = Type.GetType(typename);

Что вызывает исключение в System.RuntimeTypeHandle.GetTypeByName


Проблема заключалась в различии в файле JSON по сравнению с объектной моделью JSON.

Решение состоит в том, чтобы повторно сохранить объектную модель JSON в файл, например:

string jsonSettings = fastJSON.JSON.ToJSON(JSONObjectModel);
File.WriteAllText(JSONFilePath, jsonSettings);

Ответ 7

Один из способов решения этой проблемы - перейти в "Управление пакетами NuGet для решения", щелкнув правой кнопкой мыши в проводнике решений. После этого перейдите в "Консолидация" и найдите пакет, который вызывает проблемы. Убедитесь, что все проекты в решении используют одну и ту же версию.

введите описание изображения здесь

Ответ 8

У меня была другая причина: в моем случае я раньше использовал различные версии пакета nuget, и у меня был app.config, который по какой-то причине автоматически генерировался с помощью такого контента:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.1.0" />
  </dependentAssembly>

Итак, у меня была только версия 1.1.0.0, но из-за этой команды перенаправления она выглядела как 1.1.1.0, хотя Visual Studio установила nuget для 1.1.0.0. Изменение newVersion до 1.1.0.0 исправлено:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.0.0" />
  </dependentAssembly>