有一个问题 - 只有当我请求一个控制器时 - 我得到例外:
无法加载文件或程序集“System.Web.Mvc,Version = 4.0.0.1,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040
这很奇怪,因为在我的配置文件中,我看到版本是4.0.0.0并且所有其他控制器都很好,只有当我在服务器上传应用程序时才会发生这种情况。
答案 0 :(得分:20)
这是一个已知问题。似乎您最近已从3.0迁移到4.0,或者此应用程序是来自存储库的新克隆。单个控制器可能没有nuget恢复。我也遇到过这个问题。我得到了这个msdn link并且浏览它有一个解决方案。以下是提到的步骤。
可以通过实施以下方法之一来解决问题 解决方案:
(首选)从NuGet库安装Microsoft.AspNet.Mvc(这将在您的web.config中安装绑定重定向)。你可以做 这来自NuGet包管理器或Visual中的NuGet控制台 工作室:
安装包Microsoft.AspNet.Mvc -Version -Project PROJECTNAME
MVC 4版本:4.0.40804.0
MVC 3版本:3.0.50813.1
- 醇>
手动更新对System.Web.MVC.dll的引用(不要使用GAC中的引用)。
尝试添加参考 - >装配 - >扩展对话框。
在任何一种情况下都要确保复制本地项目属性 程序集设置为true,因此它最终位于bin文件夹中 需要部署。有一个已知的NuGet错误可以重置Copy 本地标志:https://nuget.codeplex.com/workitem/4344
为所有引用System.Web.Mvc dll的项目安装Nuget包Microsoft.AspNet.Mvc 希望这可以解决您的问题
答案 1 :(得分:0)
由于ASP.Net程序集解决了怪异问题,我在VSO代理上遇到了这个构建错误。我更改了一些构建配置,Visual Studio将MVC项目的输出目录修改为\bin\x86\Debug
或类似的东西。
之前我曾经咬过我,我记得ASP.Net只想建立\bin
。
因此,当您在构建时遇到任何类型的“无法找到引用”时,请记住检查构建输出目录是否仅为\bin
:
有关此问题的更多信息: Changing output directory for asp.net project in Visual Studio
希望这有助于某人。
答案 2 :(得分:0)
您可以引用ASP.NET MVC作为GAC的参考,但不同的开发人员可能会安装不同版本的MVC。
删除对ASP:NET MVC的引用,并将ASP.NET MVC添加为nuget包。
答案 3 :(得分:0)
转到Nuget管理器,搜索:“ Microsoft.AspNet.Mvc”,然后按更新按钮。
对我的案子有用。
答案 4 :(得分:0)
我在运行时也得到了它,这是由于我的项目(使用NuGet PackageReference的单元测试项目)引用了已经具有必要的绑定重定向的ASP.NET网站项目(编译器建议)构建时的警告)。我必须在单元测试项目中添加相同的绑定重定向。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.6.0" newVersion="5.2.6.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>