Не удалось загрузить файл или сборку… Неверный параметр

199

Недавно я встретил следующее исключение в решении С#:

Ошибка 2 Не удалось загрузить файл или сборку "Newtonsoft.Json, Версия = 3.5.0.0, Культура = нейтральная, PublicKeyToken = b9a188c8922137c6 'или одной из его зависимостей. Неверный параметр. (Исключение из HRESULT: 0x80070057 (E_INVALIDARG))

Это не зависит ни от моего кода, ни от имени сборки (например, Newtonsoft.Json в этом случае).

Когда я удаляю эту DLL из решения, компилятор рассказывает о другом в том же исключении. Поэтому я полагаю, что что-то должно быть отключено/выключено на моем ПК:)

  • 3
    Нет. Это либо ошибка компилятора, либо исключение времени выполнения. Я подозреваю последнее. Пожалуйста, будьте более ясны.
  • 2
    Я также столкнулся с тем же исключением, но мне удалось исправить это с помощью решения Томаса. Проблема была из-за неправильного выключения системы из-за сбоя питания
Теги:
exception
compiler-errors
compiler-construction

26 ответов

323
Лучший ответ

Похоже, что на поврежденную сборку ссылаются.

Снимите оба параметра:

  • папка\bin вашего проекта

  • временная папка (должна быть C:\Users\your_username\AppData\Local\Temp\Temporary ASP.NET Files в Windows 7)

и проверьте, не произошло ли еще ошибка

  • 3
    Алекс, большое спасибо за это! помогло второе: я почистил временную директорию файлов ASP.NEt)
  • 0
    рад слышать, что это работает. не забудьте принять ответ, если это помогло :)
Показать ещё 12 комментариев
282

В зависимости от того, запущен ли X64, вам может понадобиться очистить еще пару пятен. Просто очистки моего каталога пользователя было недостаточно.

  • % TEMP%\Временные файлы ASP.NET
  • C:\Windows\Microsoft.NET\Framework\v2.0.50727\Временные файлы ASP.NET
  • C:\Windows\Microsoft.NET\Framework\v4.0.30319\Временные файлы ASP.NET
  • C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Временные файлы ASP.NET
  • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Временные файлы ASP.NET

Этот список будет расти, как если бы у вас были другие версии установленной инфраструктуры.

  • 72
    Вы можете обнаружить, что вам нужно это сделать, если во время компиляции у вас был синий экран
  • 0
    Thnx !! Я знал, что это будет что-то вроде испорченного кеша.
Показать ещё 13 комментариев
40

Мне пришлось очистить

C:/Windows/Microsoft.NET/Framework/v4.0.30319/Внешние файлы ASP.NET

Только тогда проблема была решена.

  • 2
    Спасибо человек, ты спасатель жизни.
  • 2
    ты король
Показать ещё 1 комментарий
13

Чтобы точно знать, что удалить, добавьте следующий раздел реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion\EnableLog (DWord set to 1).

Затем вы увидите вывод, как показано ниже. Это говорит вам, где asp.net пытается загрузить ваши DLL. Очистите этот каталог.

LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\app\AtlasAdvisor\web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL **file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3c8629f7/dfa387b6/Avanade.ViddlerNet.DLL.**
LOG: Attempting download of new URL **file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3c8629f7/dfa387b6/Avanade.ViddlerNet/Avanade.ViddlerNet.DLL**.
  • 0
    Этот совет позволил мне легко решить проблему. +1
  • 3
    О, а также, сброс IIS был необходим для меня, чтобы увидеть пути.
Показать ещё 3 комментария
12

Снимите временные файлы фреймов для вашего проекта в: -

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Временные файлы ASP.NET\

5

Вы также можете очистить каталог пакетов и разрешить NuGet повторно загружать отсутствующие пакеты

он решил проблему для меня

  • 1
    Это тот, который решил это для меня.
  • 0
    ... и я, хотя я только что удалил оскорбительный каталог пакета.
Показать ещё 2 комментария
4

Удалите все файлы из этих папок.

C:/Windows/Microsoft.NET/Framework/v4.0.30319/Внешние файлы ASP.NET C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Файлы

3

Просто очистите эту папку: (только окна x64)

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Временные файлы ASP.NET

3

Помогло получить свежий набор двоичных файлов из элемента управления Source.

Спасибо

2

Я просто удаляю данные темпа приложения из этого пути

C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files

Решение проблемы

2

У меня была такая же проблема здесь - выше решения не работали. Проблема была в ActionMailer. Я выполнил следующие команды удаления и установки nuget

uninstall-package ActionMailer
install-package ActionMailer

Решил мои проблемы, надеюсь, поможет кому-то другому.

2

Спасибо, Алекс, второй пункт помог мне исправить это.

Похоже, что если вы не запускаете визуальную студию в качестве администратора в Windows 7, она хранит ваши временные файлы локально, а не C:\Windows\Microsoft.NET\Framework\v2.0.50727\Временные файлы ASP.NET.

Смотрите следующее сообщение в блоге: http://www.dotnetscraps.com/dotnetscraps/post/Location-of-Temporary-ASPNET-files-in-Vista-or-Windows-7.aspx

1

Я вижу, что много техников опубликовали сообщение об очистке временных каталогов ASP.NET времени выполнения, относящихся к каждой инфраструктуре .Net, размещенной на вашем компьютере, как в этом ответ. Но я считаю, что мы должны знать четкую логистику о том, почему нам нужно слепо очистить все временные рабочие каталоги всех инфраструктур .NET. По мне, это не должно быть.

Мой совет будет заключаться в том, что вы должны попытаться использовать метод очистки столбца для устранения этой проблемы. Как узнать, какая директория для очистки?

  • Перейдите в IIS и щелкните правой кнопкой мыши на своем веб-сайте node в левой навигационной панели, чтобы открыть контекстное меню. В контекстном меню выберите Manage ApplicationAdvanced Settings..., чтобы открыть окно Advanced Settings.
  • Проверьте пул приложений, на который назначен ваш веб-сайт. В моем случае это DefaultAppPool, как показано ниже:

Изображение 106644

  1. Теперь перейдите в Application Pools node в левой панели навигации в IIS. Теперь проверьте, какая версия .Net CLR запускается вашим пулом приложений. В моем случае это v4.0, как показано ниже:

Изображение 106645

Так как версия CLR, размещенная моим пулом приложений, - v4.0, поэтому я очистил только временные файлы в папке, относящейся к ASP.NET v4.0, только как показано ниже:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

И что это. Моя проблема решена.

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

1

Вы можете либо очистить, создать или перестроить приложение, либо просто удалить Временные файлы ASP.NET в C:\Users\YOUR USERNAME\AppData\Local\Temp

Это работает как магия. В моем случае у меня была проблема с привязкой к сборке: Не удалось загрузить файл bla bla bla

вы также можете увидеть решение 2 как http://www.codeproject.com/Articles/663453/Understanding-Clean-Build-and-Rebuild-in-Visual-St

1

Это может произойти при обращении к DLL-оболочке COM-оболочки. В рамках проекта Visual Studio в разделе "Ссылки" выберите связанные DLL файлы оболочки COM и убедитесь, что они имеют следующие значения свойств: "Вставить типы взаимодействия": False и "Specific Version": False.

  • 0
    Это отличный ответ и должен получить больше голосов. Все остальные ответы воспринимаются как должное в контексте ASP.NET. Однако у меня было то же исключение, вызванное вызовом COM в простом консольном приложении; это отлично сработало для меня. Спасибо, сэр.
1

Если вы используете инструменты данных SQL Server 2012, которые используют оболочку VS2010 по состоянию на 1 мая 2013 года, проверьте настройки Configuration Manager. Изменение имени сервера из Workflow в xCPWorkflow было достаточно, чтобы получить тот же самый Неверный параметр (Исключение из сообщения HRESULT: 0x80070057 (E_INVALIDARG)).

1

Очистка C:\Windows\Microsoft.NET\Framework\v2.0.50727\Временные файлы ASP.NET работали для меня. Думая о автоматизации процесса удаления, чтобы избежать проблемы в будущем.

0

У меня возникла эта проблема при создании контроллера в MVC. Я изменил версию .net framework. Проблема решена.

0

У меня были пользователи Siemens Teamcenter 10 Client для Microsoft Office, получая ту же ошибку в отношении другой DLL. Ни один из других ответов не работал. Решение заключалось в том, чтобы удалить папки в

C:\Users\%username%\AppData\Local\assembly\
0

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

0

В моем случае, изменив номер порта IISExpress в моих свойствах проекта, решила проблему.

0

Я столкнулся с такой же ошибкой, потому что приложение не находило зависимые фреймворки в папке C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\. Я просто ремонтирую свою визуальную студию, которая добавила требуемую структуру в вышерасположенное место, и она отлично работает.

0

Иногда вам также необходимо очистить эту папку: C:\Windows\Temp\Temporary ASP.NET

0

Удалить все файлы из временной папки (C:\Users\user_name\AppData\Local\Temp\Temporary ASP.NET Files\project folder)

0

В моем случае я хотел скомпилировать COM-видимую DLL. Проблема состояла в том, что более старая версия этой DLL находилась здесь:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE

Таким образом, Visual Studio загрузила эту версию вместо недавно скомпилированной, поскольку она пыталась зарегистрировать ее.

0

Проблема связана с версией среды исполнения .Net библиотеки ссылок (расширенные ссылки, выберите библиотеку и проверьте "Версию времени выполнения". У меня возникла проблема с Antlr3.Runtime после обновления моего проекта визуальной студии до версии v4. 5. Я использовал NuGet для удаления Microsoft ASP.NET Web Optimization Framework (из-за цепочки зависимостей, которая мешала мне удалять Antlr3 напрямую)

Затем я использовал NuGet для переустановки Microsoft ASP.NET Web Optimization Framework. Это заново установило правильные версии времени выполнения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню