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

Не удалось загрузить файл или сборку "System, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" или одна из его зависимостей

У меня есть это исключение, сгенерированное на некоторых пользовательских машинах (~ 1 из 20):

Не удалось загрузить файл или сборку 'System, Version = 4.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089 'или одна из ее зависимостей. Система не может найти указанный файл.

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

У меня есть приложение надстройки, которое использует WCF для подключения к серверу. Надстройка, встроенная в .NET Framework 3.5 с VS 2008.

Ошибка воспроизводится на одном из тестовых машин только в одной учетной записи пользователя. Я устанавливаю свое приложение и могу только воспроизвести его из одной учетной записи на этой машине всюду, пока она работает нормально. Кроме того, он воспроизводится только с одной версией хост-приложения, которую я создал надстройкой для (я предполагаю, потому что использует differnet.NET Framework).

Я проверил журналы плавких предохранителей, и я вижу следующее:


Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
Running under executable  C:\Program Files\SolidWorks Corp\SolidWorks\sldworks.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = Home\User
LOG: DisplayName = System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
 (Fully-specified)
LOG: Appbase = file:///C:/Program Files/SolidWorks Corp/SolidWorks/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = NULL
Calling assembly : System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a.

Поэтому по некоторым причинам он пытается использовать загрузчик v2.0.50727\mscorwks.dll для загрузки версии 4.0.0.0 из System.dll. На машине сборки я ссылаюсь на 2.0.0.0 версию System.dll

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

Спасибо, Артем

4b9b3361

Ответ 1

У меня была такая же проблема - некоторые пользователи могли тянуть с git, и все прошло отлично. Некоторые будут тянуть и получать очень похожее исключение:

Не удалось загрузить файл или сборку '..., Version =..., Culture = neutral, PublicKeyToken =...' или одну из его зависимостей. Система не может найти указанный файл.

В моем конкретном случае это был AjaxMin, поэтому фактическая ошибка выглядела так, но детали не имеют значения:

Не удалось загрузить файл или сборку 'AjaxMin, Version = 4.95.4924.12383, Culture = neutral, PublicKeyToken = 21ef50ce11b5d80f' или одну из его зависимостей. Система не может найти указанный файл.

Это оказалось результатом следующих действий над решением:

  • Для решения было включено восстановление пакета NuGet.

  • Был добавлен проект, и в него был установлен пакет Nuget (в этом случае AjaxMin).

  • Проект был перемещен в другую папку в решении.

  • Пакет Nuget был обновлен до более новой версии.

И медленно, но верно эта ошибка начала появляться для некоторых пользователей.

Причина заключалась в том, что пакеты решений /respositories.config на уровне решений сохраняли старую ссылку на проект и теперь имели новую вторую запись для перенесенного проекта. Другими словами, это имело это до реорганизации:

  <repository path="..\Old\packages.config" />

И это после reorg:

  <repository path="..\Old\packages.config" />
  <repository path="..\New\packages.config" />

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

С восстановлением пакета Nuget, оба файла packages.config читаются, каждый из которых указывает на собственный список пакетов Nuget и версий пакетов. Однако до того, как пакет Nuget был обновлен до более новой версии, конфликтов не было.

Однако после обновления пакета Nuget только активные проекты обновили свои репозитории. NuGet Package Restore выбрал загрузку только одной версии библиотеки - первой, с которой она столкнулась в файле repositories.config, который был более старым. Компилятор и IDE продолжали, как если бы он выбрал новый. Результатом стало исключение во время выполнения, в котором говорилось, что DLL отсутствует.

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

Ответ 2

Вы используете .net 4? - Возможно, на клиентах установлен только "клиентский профиль .NET Framework 4". Попробуйте установить полный пакет! Загрузить здесь

Ответ 3

Я получил это после отказа от проекта с .net 4.5 до .net 3.5.

Чтобы решить, мне нужно было войти в окно свойств - свойств - настроек и удалить все мои настройки, сохранить проект, выйти и перезапустить визуальную студию, вернуться в окно настроек проекта - properties - settings и повторно ввести все мои настройки и значения по умолчанию

Ответ 4

В моем случае я смог найти проблему с ScriptManager, установив Debug = true в файле web.config

Ответ 5

Я ответил слишком поздно, но он работал в моем случае. Если вы столкнулись с этой проблемой в своем проекте, добавьте следующую строку в свой web.config:

<compilation  batch="false" >

Это сработало в моем случае. Если у вас уже есть тег компиляции в вашем web.config, то добавьте к нему только свойство batch = "false".

Ответ 6

Вы можете включить пакеты NuGet и обновить DLL. так что он работает. или вы можете обновить пакет вручную, пройдя через диспетчер пакетов в своем vs, если вы знаете, какая версия вам нужна для вашего решения.

Ответ 7

Даже у меня есть некоторые более странные вещи, я вижу, что в GAC нет DLL, откуда загружается dll, но windows > Module показывает загруженную версию system.dll версии 4.0.0.0

Ответ 8

Это сработало для меня. Перейдите в Project- > Propertied- > Target Frawork- > Change frame work, как 3.5 до 4.0

Ответ 9

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

apt-get install mono-utils mono-runtime-sgen mono-runtime-common \
                mono-runtime-boehm mono-runtime-dbg mono-xbuild

Ответ 10

Я видел это пару раз, и это обычно исправляется запуском восстановления на .NET Framework (какую бы версию приложение не пыталось использовать).