Не удалось загрузить файл или сборку "Microsoft.Web.Infrastructure,

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

Но есть эта ошибка:

Exception information: 
    Exception type: InvalidOperationException 
    Exception message: The pre-application start initialization method Start on type RouteDebug.PreApplicationStart threw an exception with the following error message: Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified..
   at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)
   at System.Web.Compilation.BuildManager.CallPreStartInitMethods()
   at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)

Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
   at RouteDebug.PreApplicationStart.Start()

Проект был nopcommerce.

Что нужно сделать для устранения этой ошибки?

Ответ 2

Я обнаружил, что даже несмотря на то, что он работал в моей dev-блоке, сборка не была добавлена ​​в проект. Найдите Microsoft.Web.Infrastructure в NuGet и установите его там. Затем убедитесь, что выбрана копия Local.

Ответ 3

Установите AspNetMVC3ToolsUpdateSetup, загруженный из здесь, решит эту проблему без добавления ссылки

Ответ 4

Оказалось, что после выполнения очистки ссылок он удалил Microsoft.Web.Infrastructure, но не из файла packages.config. После попытки добавить его снова, используя Package Manager Console, Visual Studio говорит, что он уже установлен, который является ложным, потому что он был удален.

Затем я удалил строку кода в файле packages.config

<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />

и снова выполнил команду

PM> Install-Package Microsoft.Web.Infrastructure

После этого теперь он отлично работает.

Ответ 5

Несмотря на количество ответов, я добавлю еще один, который ИМХО делает вещи немного яснее.

В качестве Rob и wrightmail уже упоминалось Microsoft.Web.Infrastructure - пакет NuGet (ссылка не нужно, у вас это в диспетчере пакетов NuGet).

По-видимому, на него ссылался ваш проект и внезапно исчез. Существует множество причин, но важно то, что, несмотря на то, что вы, возможно, включили Автоматическое восстановление пакетов в Visual Studio:

  • Управление пакетами NuGet для решения (контекстное меню в обозревателе решений),
  • Разрешить NuGet загружать отсутствующие пакеты (настройки),
  • Автоматическая проверка отсутствующих пакетов во время сборки в Visual Studio (настройки),

для некоторых пакетов может потребоваться повторная установка вручную. Я не знаю, что путает NuGet, возможно, вручную удалив ссылку, но вот решение, которое я обычно применяю в таких случаях. Следующая консоль PM помогает восстановить пакет, сохраняя исходную версию (не обновляя, возможно, существующую новую):

Обновление пакета Microsoft.Web.Infrastructure -Reinstall

Сохранение версии может потребоваться, если вы не хотите случайно перезаписывать существующий пакет своей новой версией, которая, возможно, удаляет "старые" функции, которые вы, возможно, использовали в своем проекте.

И, как доказательство, несмотря на то, что версия не изменяется, здесь вывод при выполнении команды:

PM> Update-Package Microsoft.Web.Infrastructure -Reinstall
Attempting to gather dependencies information for multiple packages with respect to project 'Samples.NuGet\DemoApp\DemoApp', targeting '.NETFramework,Version=v4.5.2'
Attempting to resolve dependencies for multiple packages
Resolving actions install multiple packages
...
Package removal starts here...
...
Removed package 'Microsoft.AspNet.Web.Optimization 1.1.3' from 'packages.config'
Successfully uninstalled 'Microsoft.AspNet.Web.Optimization 1.1.3' from DemoApp
Removed package 'WebGrease 1.5.2' from 'packages.config'
Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\uninstall.ps1'
Successfully uninstalled 'WebGrease 1.5.2' from DemoApp
...
More package removals here. Omitted for brevity...
...
Removed package 'Microsoft.Web.Infrastructure 1.0.0.0' from 'packages.config'
Successfully uninstalled 'Microsoft.Web.Infrastructure 1.0.0.0' from DemoApp
...
More package removals here. Omitted for brevity...
...
Removed package 'Antlr 3.4.1.9004' from 'packages.config'
Successfully uninstalled 'Antlr 3.4.1.9004' from MvcLenseApp
Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\Lense.Mvc5\packages'
--- Install packages (in reverse order) ---
Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'Antlr.3.4.1.9004' to 'packages.config'
Successfully installed 'Antlr 3.4.1.9004' to DemoApp
...
More package installs here. Omitted for brevity...
...
Package 'Microsoft.Web.Infrastructure.1.0.0' already exists in folder 'D:\Projects\Lense.Mvc5\packages'
Added package 'Microsoft.Web.Infrastructure.1.0.0' to 'packages.config'
Successfully installed 'Microsoft.Web.Infrastructure 1.0.0' to MvcLenseApp
...
More package installs here. Omitted for brevity...
...
Package 'WebGrease.1.5.2' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'WebGrease.1.5.2' to 'packages.config'
Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\install.ps1'
Successfully installed 'WebGrease 1.5.2' to DemoApp
Package 'Microsoft.AspNet.Web.Optimization.1.1.3' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'Microsoft.AspNet.Web.Optimization.1.1.3' to 'packages.config'
...
End of package re-install. 
...
Successfully installed 'Microsoft.AspNet.Web.Optimization 1.1.3' to DemoApp
PM> 

Конечно, если вы хотите переустановить все пакеты, вам может понадобиться ознакомиться с командами обновления/установки в NuGet здесь и здесь.

Ответ 6

Resharper обнаружил Microsoft.Web.Infrastructure как неиспользуемую ссылку, поэтому я удалил ее. Локально работает нормально, но затем я получил ту же ошибку после публикации в dev.

Заключение, будьте осторожны при удалении ссылок, отмеченных как неиспользуемые Resharper

Ответ 8

У меня была аналогичная проблема. NuGet показал, что пакет успешно установлен, но ссылка не была добавлена ​​в мой проект.

Запуск <PM> Install-Package Microsoft.Web.InfraStructure также не помог, так как менеджер пакетов продолжал говорить, что он уже установлен

Я, наконец, добавил его вручную, отредактировав файл csproj и добавив следующие строки:

 <Reference Include="Microsoft.Web.Infrastructure">
  <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
  <Private>True</Private>
</Reference>

Это решило проблему.

Ответ 9

Вам необходимо загрузить структуру ASP.NET MVC на сервере, на котором размещено ваше приложение. Это быстрое исправление, просто скачайте и установите отсюда (это MVC 3 framework http://www.asp.net/mvc/mvc3), затем будьте здоровы./p >

Ответ 10

Для меня Microsoft.Web.Infrastructure.dll отсутствовала в папке bin, она не была скопирована локально в проекте. Скопировали dll из другого проекта в решении и загрузили страницу.

Ответ 11

Очень простое решение:

В Visual Studio перейдите в раздел "Диспетчер пакетов/диспетчер пакетов/диспетчер пакетов"

<PM> Install-Package Microsoft.Web.InfraStructure

Хорошо провести время

Ответ 12

Вот мой сценарий.

У меня было многопроектное решение, содержащее проекты A, B, C.. N.

Проект B - это библиотека кода, содержащая объекты factory для selectlist.

Проект будет работать, как ожидалось, в процессе разработки, но при публикации в нашей тестовой среде я получал ошибку, с которой вы столкнулись:

Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Что случилось с менеджером пакетов nuget, я случайно установил "Microsoft ASP.NET MVC", в котором установлены зависимости для:

  • Microsoft.AspNet.Razor
  • Microsoft.AspNet.WebPages

Низкая и вот, Microsoft.AspNet.WebPages зависит от "Microsoft.Web.Infrastructure".

Мое решение заключалось в удалении трех упомянутых выше пакетов (MVC, Razor, WebPages), затем щелкните правой кнопкой мыши ссылки > add reference > Assemblies > Extensions > System.Web.MVC.

Ответ 13

Я не знаю, что случилось с моим проектом, но он ссылался на неправильный путь к DLL. Nuget правильно установил его, и это действительно было в моей файловой системе вместе с другими пакетами, но просто неправильно указали.

В папке packages есть два каталога из моего проекта, и он поднимается только один, запустив путь с помощью ..\packages\. Я изменил путь, чтобы начать с ..\..\packages\, и он исправил мою проблему.