无法加载文件或程序集“Microsoft.Web.Infrastructure,

我试图上传我的网站到服务器。 这与我的本地主机工作正常,所以我上传我的本地主机wwwroot文件夹中的一切到服务器,并更改连接string。

但是有这个错误:

 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

应该做什么来解决这个错误?

您将需要包括与您的项目的DLL,并添加一个引用。

这里是一个类似的问题已经在堆栈: MVC3部署依赖问题的链接

我发现即使它在我的开发箱上工作,程序集也不会被添加到项目中。 在NuGet中searchMicrosoft.Web.Infrastructure并从那里安装。 然后,确保select了复制本地。

安装从这里下载的AspNetMVC3ToolsUpdateSetup可以解决这个问题,而不需要添加引用

事实上,在完成参考清理之后,它删除了Microsoft.Web.Infrastructure ,而不是从packages.config文件中删除。 尝试使用Package Manager Console再次添加它之后,Visual Studio说它已被安装,因为它已被删除而为false。

然后我删除了packages.config文件中的代码行

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

并再次运行命令

 PM> Install-Package Microsoft.Web.Infrastructure 

在此之后,现在它工作正常。

尽pipe答案的数量,我会添加另一个,恕我直言,让事情更清楚一点。

正如Rob和wrightmail已经提到的Microsoft.Web.Infrastructure是一个NuGet包(链接不需要,你在NuGet包pipe理器中)。

显然,它被你的项目引用,并突然消失。 可能存在一些原因,但重要的是,尽pipe您可能已经通过以下方式在Visual Studio中启用了“ 自动包还原” :

  • pipe理解决scheme的NuGet包(解决scheme资源pipe理器中的上下文菜单),
  • 允许NuGet下载缺less的软件包(设置),
  • 在Visual Studio(设置)中生成过程中自动检查丢失的包,

某些软件包可能需要手动重新安装。 我不知道什么混淆了NuGet,也许手动删除引用,但这里是我通常在这种情况下适用的解决scheme。 以下PM控制台帮助恢复软件包,同时保留原始版本(不更新到可能存在的新版本):

更新程序包Microsoft.Web.Infrastructure – 重新安装

如果您不想用新版本无意中覆盖现有软件包,可能需要保留版本,这可能会删除您在项目中使用的“旧”function。

而且,作为一个certificate,尽pipe有点冗长,版本不会改变,下面是命令执行时的输出:

 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.Web.Infrastructure是一个未使用的引用,所以我删除了它。 本地工作正常,但后来发布到开发后,我得到了同样的错误。

结论,请注意删除标记为Resharper未使用的引用

尝试从https://www.microsoft.com/web/platform/安装Web平台;

希望能帮助到你。

我有一个类似的问题。 NuGet显示成功安装了该软件包,但该参考文件未添加到我的项目中。

运行<PM> Install-Package Microsoft.Web.InfraStructure也没有帮助,因为包pipe理器一直说它已经安装

我最后通过编辑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> 

这解决了这个问题。

您需要在托pipe应用程序的服务器上下载ASP.NET MVC框架。 这是一个快速修复,只需从这里下载并安装(这是MVC 3框架http://www.asp.net/mvc/mvc3 ),然后繁荣,你很好去。

对我来说,在bin文件夹中缺lessMicrosoft.Web.Infrastructure.dll ,它没有设置为在本地项目中复制。 从解决scheme中的另一个项目复制DLL,并加载页面。

很简单的解决scheme

在Visual Studio中,转到工具/库包pipe理器/包pipe理器控制台

 <PM> Install-Package Microsoft.Web.InfraStructure 

祝你玩得愉快

这是我的情况。

我有一个包含项目A,B,C …的多项目解决scheme。

项目B是一个包含selectselectlist对象的工厂的代码库。

该项目将在开发中按预期运行,但是当发布到我们的testing环境时,我遇到了您遇到的错误:

 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包pipe理器,我不小心安装了“Microsoft ASP.NET MVC”,它安装了以下依赖项:

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

低看,Microsoft.AspNet.WebPages依赖于“Microsoft.Web.Infrastructure”。

我的解决scheme是卸载上面提到的三个包(MVC,Razor,WebPages),然后右键单击引用>添加引用>程序集>扩展> System.Web.MVC。

我不知道我的项目发生了什么,但它引用了DLL的错误path。 Nuget正确地安装了它,它确实在我的文件系统上与其他软件包一起被正确引用。

packages文件夹中存在两个从我的项目开始的目录,只有通过..\packages\启动path才能启动它。 我改变了path开始..\..\packages\ ,它解决了我的问题。