Не удалось загрузить файл или сборку 'Microsoft.Практика.Единство"

Я пытаюсь обновить Unity до версии (2.1.505.2), но когда я запускаю приложение, я получаю следующее FileLoadException

не удалось загрузить файл или сборку 'Microsoft.Практика.Единство, Версия=2.0.414.0, культура=нейтральная, PublicKeyToken=31bf3856ad364e35' или одна из его зависимостей.

мы модернизируем с Unity 2.0.414.0 до 2.1.505.2.

  • все ссылки на проект в решении, которые относятся к Unity, относятся к правильная версия dll
  • в Gac нет библиотеки dll Unity, на которую ссылаются. (дважды проверено путем проверки gacutil -l)
  • Я удалил все библиотеки Unity из архива. Дважды проверено с помощью powershell

    PS C:> ls -rec -inc Microsoft.Practices.Unity.dll | foreach-object { "{0}`t{1}" -f $_.FullName, [System.Diagnostics.FileVersionInfo]::GetVersionInfo($_).FileVersion }
    

как я могу узнать, что / кто все еще относится к Unity 2.0.414.0?

FusionLogVw не говорит мне, какая DLL вызывает проблему.

любая помощь очень ценится!

6 ответов


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

обновление:

  • Microsoft.Практика.EnterpriseLibrary.Common
  • Microsoft.Практика.EnterpriseLibrary.Проверка

до последней версии решило проблему.

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


вы должны добавить перенаправление на правильную сборку:

но обратите внимание, что версия 2.1.505.0 следует использовать в перенаправлении!

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0" />
  </dependentAssembly>
</assemblyBinding>

вы не можете установить 2.1.505.2 из-за следующих причин:

enter image description here

Unity assembly 2.1.505.2 содержит различные версии для AssemblyVersion и AssemblyFileVersion.

CLR не заботится о AssemblyFileVersion, поэтому используется только AssemblyVersion! И AssemblyFileVersion используется только nuget!


Проверьте приложение.config / web.config и, конечно, ваши ссылки на проект.


поскольку ваш новый вопрос касается поиска существующих зависимостей от сборки, вы можете обратиться к этому вопросу:

как найти то, что зависит от конкретной версии конкретного зависимостей?

Что относится к использованию Fuslogvw.exe


Если у вас есть resharper, вы можете удалить ссылку на проблему, построить, перейти к классу, где он используется(есть ошибка) и получить resharper, чтобы исправить это для вас.

сохраняет faffing вокруг, но я ценю, что не у всех есть resharper: D


описание: это был чей-то код, я должен был исправить ошибку в коде, поэтому они предоставили мне zip-файл приложения.

Я понятия не имел, что происходит и почему всегда в первый раз мой код был запущен, и после перезагрузки приложения (после любых изменений) он начинает бросать исключение. на форумах есть много возможных решений, и я обвинял свой код и базу данных, а затем начал отменять каждый шаг. Но это не помогите!--3-->

устранение: Как несколько устранение неполадок не может исправить это но когда я перезапустил исследование каждой n каждой вещи от beaning, чтобы найти фактическую причину, вызывающую исключение, я нашел

для каждой новой сборки, папка bin моего приложения, удаляющая DLL

тогда решение состоит в том, чтобы вставить эти библиотеки DLL в папку bin приложений и перестроить код (относиться скриншот)

результат: все дерьмо ушло.

enter image description here