Не удалось загрузить файл или сборку... Неверный параметр
Недавно я встретил следующее исключение в решении C#:
Ошибка 2 Не удалось загрузить файл или сборку 'Newtonsoft.Json, версия =3.5.0.0, Culture= нейтральный, PublicKeyToken=b9a188c8922137c6' или одну из ее зависимостей. Неверный параметр. (Исключение из HRESULT: 0x80070057 (E_INVALIDARG))
Это не зависит ни от моего кода, ни от названия сборки (вроде Newtonsoft.Json
в этом случае).
Когда я удаляю эту dll из решения, компилятор говорит о другом в том же исключении. Так что я полагаю, что что-то должно быть выключено / включено на моем ПК:)
28 ответов
Выглядит как испорченная сборка, на которую ссылаются.
Очистить оба:
папка \bin вашего проекта
временная папка (должна быть
C:\Users\your_username\AppData\Local\Temp\Temporary ASP.NET Files
в windows 7)
и посмотреть, если ошибка все еще происходит
В зависимости от того, используете ли вы 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
Этот список будет расти так, как будто у вас установлены другие версии фреймворка.
Я должен был очистить
C:/Windows/Microsoft.NET/Framework/v4.0.30319/Временные файлы ASP.NET
Только тогда проблема была решена.
Чтобы точно знать, что нужно очистить - добавьте следующий раздел реестра:
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**.
Очистите временные каркасные файлы для вашего проекта в: -
C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Временные файлы ASP.NET \
Вы также можете очистить каталог пакетов и разрешить NuGet повторно загружать отсутствующие пакеты.
это решило проблему для меня
Удалите все файлы из этих папок.
C: /Windows/Microsoft.NET/Framework/v4.0.30319/Tevent ASP.NET Files C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Tevent ASP.NET Files
Помогло получение свежего набора двоичных файлов из системы контроля версий.
Спасибо
Просто очистите эту папку: (только Windows x64)
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Временные файлы ASP.NET
Спасибо, Алекс, твое второе замечание помогло мне исправить это.
Похоже, что если вы не запустите Visual Studio в качестве администратора в Windows 7, она будет хранить ваши временные файлы локально, а не C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files.
См. Следующий пост в блоге: http://www.dotnetscraps.com/dotnetscraps/post/Location-of-Temporary-ASPNET-files-in-Vista-or-Windows-7.aspx
Я просто удаляю временные данные своего приложения из этого пути
C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files
Решение проблемы
У меня была та же самая проблема здесь - вышеупомянутые решения не работали. Проблема была с ActionMailer. Я запустил следующие команды удаления и установки nuget
uninstall-package ActionMailer
install-package ActionMailer
Решены мои проблемы, надеюсь, поможет кто-то еще.
Это может произойти при обращении к библиотекам оболочки COM. В своем проекте Visual Studio в разделе "Ссылки" выберите библиотеки DLL оболочки-оболочки, на которые есть ссылки, и убедитесь, что они имеют следующие значения свойств: "Типы встроенных взаимодействий": False и "Определенная версия": False.
Я вижу, что многие технические специалисты опубликовали информацию об очистке временных каталогов среды выполнения ASP .Net, относящихся к каждой платформе.Net, размещенной на вашем компьютере, как и в этом ответе. Но я считаю, что мы должны знать четкую логистику относительно того, почему мы должны слепо очищать все временные рабочие каталоги всех.Net-структур. По мне, так не должно быть.
Я бы посоветовал вам попытаться решить проблему с помощью метода очистки каталогов. Как бы вы узнали, какой каталог очистить?
- Перейдите в IIS и щелкните правой кнопкой мыши узел вашего сайта в левой панели навигации, чтобы открыть контекстное меню. В контекстном меню выберите пункт
Manage Application
->Advanced Settings...
открытьAdvanced Settings
окно. - Проверьте пул приложений, которому назначен ваш сайт. В моем случае это
DefaultAppPool
как показано ниже:
- Теперь иди в
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
И это все. Моя проблема была решена.
Извлеченный урок. Это свидетельствует о том, что все временные файлы, используемые вашим веб-сайтом, не разбросаны по нескольким каталогам, а сразу попадают в пул ваших приложений. Так что вам нужно очистить только эту конкретную папку.
У меня была эта проблема при создании контроллера в MVC. Я изменил версию.net Framework. Проблема была решена
Если вы используете средства данных SQL Server 2012, в которых используется оболочка VS2010 по состоянию на 1 мая 2013 года, проверьте настройки Configuration Manager. Изменения имени сервера с Workflow на xCPWorkflow было достаточно для получения того же самого параметра. Параметр неверен (исключение из HRESULT: 0x80070057 (E_INVALIDARG)).
Очистка C:\Windows\Microsoft.NET\Framework\v2.0.50727\ Временные файлы ASP.NET у меня работали. Думая об автоматизации процесса удаления, чтобы избежать проблемы в будущем.
Вы можете очистить, собрать или перестроить свое приложение или просто удалить временные файлы ASP.NET в C:\Users\ ВАШЕ ИМЯ ПОЛЬЗОВАТЕЛЯ \ AppData\Local\Temp
Это работает как магия. В моем случае у меня была проблема с привязкой к сборке, говоря, что не удалось загрузить файл.
вы также можете увидеть решение 2 как http://www.codeproject.com/Articles/663453/Understanding-Clean-Build-and-Rebuild-in-Visual-St
В моем случае изменение номера порта IISExpress в свойствах моего проекта решило проблему.
Эта проблема связана с.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. Это переустановило правильные версии времени выполнения.
Очистить все файлы из временной папки (C:\Users\ имя_пользователя \AppData\Local\Temp\Temporary ASP.NET Files\project folder)
У меня была аналогичная проблема при открытии диспетчера пакетов Nuget, я удалил все временные файлы и построил проект, он работал нормально.
У меня была такая же проблема с «Chocolatey Server (Simple)», работающим на IIS, и мне пришлось выполнить следующие шаги.
- Очистите «C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files» в соответствии с рекомендациями.
- Удалите приложение «Chocolatey Server (Simple)» через choco
- Удалите каталог «C:\tools\chocolatey.server» из каталога шоколадного пакета. Важно, потому что в противном случае Web.config содержит старые зависимости, что приводит к ошибке. Простая переустановка не обновит существующий Web.config (как это было в моем случае).
- Перезапустите IIS и настройте Chocolatey Server в соответствии с рекомендациями авторов. Шоколадная страница сервера теперь должна быть видна без каких-либо ошибок.
В моем случае я хотел скомпилировать видимую COM библиотеку DLL. Проблема заключалась в том, что более старая версия этой DLL была расположена здесь:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE
Таким образом, Visual Studio загрузила эту версию вместо вновь скомпилированной, поскольку она пыталась зарегистрировать ее.
Я столкнулся с той же ошибкой, потому что приложение не нашло зависимых платформ в C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\
папка. Я просто ремонтирую свою Visual Studio, которая добавила необходимые рамки в указанном выше месте, и она работает нормально.
Иногда вам также необходимо очистить эту папку: C:\Windows\Temp\Temporary ASP.NET
Если кто-то еще использует набор инструментов WiX, я обнаружил, что мой проект установщика имел ссылку на старый проект, который был недавно удален из решения. Мне потребовалось некоторое время, чтобы осознать, что в решении, которое я пытался построить, есть ряд проектов, и в сообщении не указывается, какой проект не удалось построить (и очистить, что также не удалось).
У меня были пользователи Siemens Teamcenter 10 Client для Microsoft Office, получающие ту же ошибку о другой DLL. Ни один из других ответов не сработал. Решение состояло в том, чтобы удалить папки в
C:\Users\%username%\AppData\Local\assembly\