无法加载文件或程序集&System; Web.Mvc,Version = 3.0.0.0'或其中一个依赖项

时间:2014-06-04 03:37:12

标签: c# asp.net-mvc ninject

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

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,Version = 3.0.0.0,Culture = neutral,       PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。       定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

7 个答案:

答案 0 :(得分:16)

更新应用程序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>

答案 1 :(得分:7)

如果您关注Pro ASP.NET MVC 5,请按照以下步骤解决问题:

  1. 在VS的项目树中,右键单击References并转到Manage NuGet Packages
  2. 转到Onlinenuget.org并搜索ninject。
  3. 安装NinjectNinject.Web.CommonNinject.MVC5(该书说明要安装MVC3)。
  4. Manage NuGet Packages菜单中(从步骤1开始),转到Updatesnuget.org
  5. 更新所有模块,尤其是Microsoft ASP.NET MVC

答案 2 :(得分:3)

我有一个使用Ninject的Microsoft ASP.NET Web API 2.2项目。

要解决此问题,我必须为我的项目安装NuGet Package Microsoft ASP.NET MVC 4,因为Ninject需要System.Web.Mvc。通过这样做,Visual Studio将System.Web.Mvc添加到项目的引用。

此外,您应该为Copy Local引用的属性设置System.Web.Mvc = True,因此DLL将被复制到Bin文件夹。 DLL没有标准的.NET Framework。它是ASP.NET MVC包的一部分。

答案 3 :(得分:1)

如果amighty's Answer没有与您合作,请尝试此

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

这个解决方案是在长时间挣扎于此错误之后出现的

答案 4 :(得分:1)

我扩展了引用,当我在System.Web.Mvc上盘旋时,我发现它的版本是4.0.0.1。它的路径很奇怪C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET MVC 4 \ Assemblies。我的packages.config显示相应的nuget包是Microsoft.AspNet.Mvc.5.2.3。参考似乎是错误的。因此从项目中删除了引用。然后使用以下命令卸载nuget包。

uninstall-package Microsoft.AspNet.Mvc -force

注意命令中的强制。

然后我通过以下命令重新安装它

install-package Microsoft.AspNet.Mvc -version 5.2.3.0

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

d:\的Vivek \代码1 \ Sept17 \包\ 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包。

然后它终于奏效了。

答案 5 :(得分:0)

我的申请遇到了这个问题。

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

我的问题的解决方案是Web应用程序中的Mvc dll版本与web-api项目的版本不同。所以,每当我试图点击web-api时,都会抛出错误。我只是确保两个项目都有相同的Mvc dll版本,并且事情开始正常。您可以使用NuGet包管理器。

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

答案 6 :(得分:0)

就我而言,缺少的程序集已经包含在项目参考中。我通过选择它来解决,然后将其“复制本地”属性设置为True。我使用Visual Studio中的Web部署将项目“发布”到IIS。这次将程序集复制到网站的\ bin文件夹中。