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

211

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

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

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

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

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

Ответы:

346

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

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

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

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

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

Alex
источник
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**.
voidsstr
источник
3
О, а также, сброс IIS был необходим для меня, чтобы увидеть пути.
Лэндон Поч
Где отображается этот журнал?
Люк Райс
Журнал отображается в выводе ошибки, когда возникает исключение
voidsstr
12

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

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

Энди
источник
5

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

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

Megz
источник
... и я, хотя я только что удалил оскорбительный каталог пакета.
Фил Купер
Я удалил временные файлы в 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

Rakin
источник
3

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

Спасибо

Как будто
источник
3

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

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

pixparker
источник
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

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

LiamB
источник
2

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

Nemo
источник
Это отличный ответ и должен получить больше голосов. Все остальные ответы воспринимаются как должное в контексте 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

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

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

RBT
источник
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)) .

SAinCA
источник
1

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

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

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

Ифеани Чукву
источник
1

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

Хоссейн Гаджизаде
источник
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)

Kaushal
источник
0

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

Eriendel
источник
0

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

Виджай Кумбхойе
источник
0

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

H3N
источник
0

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

ржавый
источник
0

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

C:\Users\%username%\AppData\Local\assembly\
Калеб Мауэр
источник
0

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

Шрейя Сингх
источник