C# 无法加载文件或程序集';System.Web.Mvc,版本=3.0.0.0';或者它的一个依赖项

C# 无法加载文件或程序集';System.Web.Mvc,版本=3.0.0.0';或者它的一个依赖项,c#,asp.net-mvc,ninject,C#,Asp.net Mvc,Ninject,我正在使用Package Manager控制台中的以下命令将Ninject添加到MVC项目中: Install-Package Ninject -version 3.0.1.10 Install-Package Ninject.Web.Common -version 3.0.0.7 Install-Package Ninject.MVC3 -Version 3.0.0.6 运行应用程序时,会出现如下错误: 无法加载文件或程序集'System.Web.Mvc,版本=3.0.0.0,区域性=中性,

我正在使用Package Manager控制台中的以下命令将Ninject添加到MVC项目中:

Install-Package Ninject -version 3.0.1.10
Install-Package Ninject.Web.Common -version 3.0.0.7
Install-Package Ninject.MVC3 -Version 3.0.0.6
运行应用程序时,会出现如下错误:

无法加载文件或程序集'System.Web.Mvc,版本=3.0.0.0,区域性=中性, PublicKeyToken=31bf3856ad364e35'或其依赖项之一。 定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100)


更新应用程序web.config文件

确保在app web.config文件中进行这些更改,而不是在Views文件夹中的web.config文件中

 <runtime>
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
             <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
             <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
         </dependentAssembly>
      </assemblyBinding>
 </runtime>

如果您遵循,请按照以下步骤解决问题:

  • 在VS中的项目树中,右键单击
    References
    ,然后转到
    管理NuGet软件包
  • 转到
    在线
    nuget.org
    并搜索ninject
  • 安装
    Ninject
    Ninject.Web.Common
    Ninject.MVC5
    (书中说要安装
    MVC3
  • 管理NuGet软件包
    菜单中(从步骤1开始),转到
    更新
    NuGet.org
  • 更新所有模块,尤其是Microsoft ASP.NET MVC

  • 我有一个
    Microsoft ASP.NET Web API 2.2
    项目,它使用Ninject

    为了解决这个问题,我必须为我的项目安装NuGet软件包
    Microsoft ASP.NET MVC 4
    ,因为Ninject需要
    System.Web.MVC
    。通过这样做,VisualStudio将把
    System.Web.Mvc
    添加到项目的参考中


    另外,对于
    System.Web.Mvc
    引用的属性,您应该将
    Copy Local
    =True,这样DLL将被复制到
    Bin
    文件夹中。DLL不随标准.NET Framework提供。它是ASP.NET MVC包的一部分。

    我的应用程序遇到了这个问题

    在我的解决方案中,我们有一个web应用程序项目和一个web api项目。web应用程序正在使用web api

    解决我的问题的方法是,Web应用程序中的Mvc dll版本与Web api项目中的版本不同。所以,每当我尝试访问web api时,它都会抛出错误。我只是确保这两个项目都有相同的Mvc dll版本,并且一切都开始正常工作。您可以使用NuGet软件包管理器进行此操作

    只需提及它以供其他可能面临类似情况的人参考。

    如果没有与您合作,请尝试此功能

    <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
    </dependentAssembly>
    
    
    

    这个解决方案是在与这个错误作了长时间的斗争之后出现的。我扩展了引用,当我在System.Web.Mvc上停留时,我发现它的版本是4.0.0.1。它的路径奇怪地是C:\ProgramFiles(x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assembly。My packages.config显示了相应的nuget包是Microsoft.AspNet.Mvc.5.2.3。参考文献似乎是错误的。因此,从项目中删除了引用。然后使用以下命令卸载nuget包

    卸载软件包Microsoft.AspNet.Mvc-force

    注意命令中的force

    然后我用下面的命令重新安装了它

    安装软件包Microsoft.AspNet.Mvc-版本5.2.3.0

    现在,我确保引用的dll正确地指向nuget one

    D:\Vivek\Code1\Sept17\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll

    现在,当我运行时,我发现System.Web.Webpages.Razor(Microsoft.AspNet.Webpages nuget)和System.Web.Razor(Microsoft.AspNet.Razor nuget)存在类似的问题。因此,我也删除了这些,并重新安装了相应的nuget软件包


    然后它终于起作用了。

    在我的例子中,缺少的组件已经作为项目的参考被包括在内。我通过选择它然后将其“Copy Local”属性设置为True来解决这个问题。我使用Visual Studio中的web deploy将我的项目“发布”到IIS。这次程序集被复制到网站的\bin文件夹中

    你有什么版本的System.Web.Mvc?为什么要安装这么旧的版本?只需安装Ninject.MVC3。。最新版本。。而且它会拉入你需要的依赖项。Alexei,我不知道如何检查它的版本。我认为我使用的是Version=3.0.0.0Simon,因为我是MVC新手,所以我尝试遵循一些使用旧版本的教程。但我尝试使用最新版本,输出仍然是浏览器中的sameOpen“bin”文件夹,右键单击那里的System.Web.Mvc-details选项卡将显示该版本。很可能您需要“程序集重定向”来将旧版本映射到新版本(或其他方式)。不知怎的,我遇到了这个问题。我一定是更新了MVC NuGet软件包,结果是版本不匹配。没有标记为答案,因此我不知道这是否回答了Dani的问题,但回答了我的问题:)ThanksI出现错误,必须将
    新版本更改为
    5.0.0.0
    ,才能正常工作。几个月后,在第一百次重建后,它突然停止了开发工作。这次我不得不把它改回
    5.2.3.0