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


211

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

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

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

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


3
Нет. Это либо ошибка компилятора, либо исключение времени выполнения. Я подозреваю последнее. Пожалуйста, будьте более ясны.
Леппи

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

Ответы:


346

Выглядит как испорченная сборка, на которую ссылаются.

Очистить оба:

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

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

и посмотреть, если ошибка все еще происходит


3
Алекс, большое спасибо за это! помогло второе: я очистил каталог временных файлов ASP.NEt)
Liker777

рад слышать, что это работает. не забудьте принять ответ, если это помогло :)
Alex

9
см. ответ @Thomas для других мест, чтобы удалить (который работал для меня)
Simon_Weaver

3
Спасибо. Очистка пользовательской временной папки после тяжелого сбоя решила проблему для меня.
Петрус Терон

13
% 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 C: /Windows/Microsoft.NET/Framework/ v4.0.30319 / Temporary ASP.NET Files Этот список будет расти, как если бы у вас были другие версии .NetFramework. Ответ Src: stackoverflow.com/a/16033324/1724777 stackoverflow.com/a/11743430/1724777 Причина The Prob: BLUE_SCREEN_OF_DEATH
NavaRajan

286

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

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

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


72
Вы можете найти, что вам нужно сделать это, если ваш компьютер во время компиляции
отключился от

2
+1 Красиво скомпилированное дополнение к ответу. Это исправило это для меня, спасибо
Ральф Лавель

7
Это выглядит как решение, если вы работаете в Visual Studio с правами администратора, когда ваш компьютер выходит из строя, или, наоборот, если вы такой же тупой, как и я, когда у вас заканчивается заряд батареи.
Сав

4
О, МОЙ БОГ! Я получил более 4 ГБ из моих доисторических проектов в тех местах! Разве эта вещь никогда не убирается?!?! Спасибо!
user2173353

2
Просто хотел сообщить, что через 2 года этот пост все еще помогает людям. Огромное спасибо.
Лоуренс Фрост

42

Я должен был очистить

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

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


1
Этот ответ сработал и у меня, с 64-битной машиной Win 7, на которой в IIS Express был установлен MVC 4
Ben H

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**.

3
О, а также, сброс IIS был необходим для меня, чтобы увидеть пути.
Лэндон Поч

Где отображается этот журнал?
Люк Райс

Журнал отображается в выводе ошибки, когда возникает исключение
voidsstr

12

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

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


5

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

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


... и я, хотя я только что удалил оскорбительный каталог пакета.
Фил Купер

Я удалил временные файлы в AppData temp & c: \ ... \ micorosoft.net \ .. \ temp, iisreset, ... все, что упоминалось выше. но не работает со мной. Как только я удалил все пакеты и восстановил его ... он работает со мной ... большое спасибо: D
bunjeeb

@bunjeeb это чувак удовольствия :)
Мегз

4

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

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


3

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

Спасибо


3

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

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


2

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

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

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


2

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

uninstall-package ActionMailer
install-package ActionMailer

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


2

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


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

2

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

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

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


2

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

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

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

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

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

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

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

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

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

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


1

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


1

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


1

Вы можете очистить, собрать или перестроить свое приложение или просто удалить временные файлы ASP.NET в C: \ Users \ ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ \ AppData \ Local \ Temp

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

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



0

Эта проблема связана с .Net исполняемой версией указанной библиотеки классов (разверните ссылки, выберите библиотеку и проверьте «Runtime Version». У меня возникла проблема с Antlr3.Runtime после обновления проекта Visual Studio до версии 4.5. I использовал NuGet для удаления Microsoft ASP.NET Web Optimization Framework (из-за цепочки зависимостей, которые помешали мне удалить Antlr3 напрямую)

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


0

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

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

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


0

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


0

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


0

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


0

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


0

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


0

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

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

0

У меня была похожая проблема при открытии диспетчера пакетов Nuget, я удалил все временные файлы и собрал проект, он работал нормально.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.