Не удалось загрузить файл или сборку 'Microsoft.Сеть.Инфраструктура,



Я попытался загрузить свой сайт на сервер. Он отлично работал с моим локальным хостом, поэтому я загрузил все в свой localhost 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.



что нужно сделать, чтобы устранить эту ошибку?

699   15  

15 ответов:

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

вот ссылка на аналогичную проблему уже на стеке: проблемы зависимости развертывания MVC3

Я обнаружил, что, хотя он работал на моем dev box, сборка не была добавлена в проект. Поиск Microsoft.Сеть.Инфраструктура в NuGet и установить его оттуда. Затем убедитесь, что он имеет локальное копирование выбрано.

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

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

затем я удалил строку кода в packages.config file

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

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

PM> Install-Package Microsoft.Web.Infrastructure

после этого, теперь он работает нормально.

несмотря на количество ответов, я добавлю еще один, который IMHO делает вещи немного яснее.

Как Роб и wrightmail уже упомянутый Microsoft.Web.Infrastructure - это пакет NuGet (ссылка не нужна, она есть в Диспетчере пакетов NuGet).

по-видимому, на него ссылался ваш проект и внезапно исчез. Ряд причин может существовать, но важно то, что, несмотря на то, что вы, возможно, включили автоматическое восстановление пакета внутри Визуальная Студия by:

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

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

Обновление-Пакет Microsoft.Сеть.Инфраструктура-Переустановить

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

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

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 здесь и здесь.

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

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

попробуйте установить веб-платформу из https://www.microsoft.com/web/platform/

надеюсь, что это помогает.

у меня была похожая проблема. 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>

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

испытал эту проблему на новой машине Windows 10 на VS2015 с существующим проектом. Менеджер Пакетов 3.4.4. Восстановление пакетов включено.

восстановление не работает. Пришлось запустить следующее в командной строке диспетчера пакетов

Update-Package -ProjectName "YourProjectName" -Id Microsoft.Web.Infrastructure -Reinstall

это внесло следующие изменения в мой файл решения чего восстановление не делало.

<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
  <Private>True</Private>
</Reference>

просто добавьте вышеуказанные элементы в раздел ItemGroup в файле решения также будет решена проблема при условии, что ..\packages\Microsoft.Сеть.Инфраструктура.1.0.0.0\lib\net40\Microsoft.Сеть.Инфраструктура.dll файлы существуют.

проще просто сделать-переустановить, но хорошо понять, что он делает по-другому для восстановления пакета.

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

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

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

в Visual Studio перейдите в меню Сервис / библиотека Диспетчер пакетов / консоль диспетчера пакетов

<PM> Install-Package Microsoft.Web.InfraStructure

приятно провести время

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

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

проект представляет собой библиотеку кода, который содержит завод для 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.сеть САШ.Бритва
  • Microsoft.сеть САШ.Веб-страницы

низкий, и вот, в Microsoft.сеть САШ.Веб-страницы зависят от " Microsoft.Сеть.Инфраструктура."

моим решением было удаление трех пакетов, упомянутых выше (MVC, Razor, WebPages), затем щелкните правой кнопкой мыши ссылки > добавить ссылку > сборки > расширения > система.Сеть.MVC.

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

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

на моей машине зависимость Nuget не была загружена правильно, папка lib внутри пакета nuget не существовала, следовательно, ошибка.

до

enter image description here

Я переименовал пакет Nuget в папке packages и Nuget правильно загрузил его с необходимой папкой lib.

после enter image description here

Comments

    Ничего не найдено.