c# - 无法加载文件或程序集 'System.Web.Mvc' 或其依赖项之一。 2个项目。一次只有一个会工作

标签 c# .net asp.net-mvc dll visual-studio-2013

所以我的解决方案中有 2 个网站项目(以及许多其他测试/dll 项目)。

项目 A - CMS - 标准 Web 项目(带有一些 Web API 集成) 项目 B - 展示网站 - MVC 5。

我构建项目 A 并运行它。它有效,没有意外的错误。 然后我构建项目 B。项目 B 工作正常,同样没有意外错误。

我回去查看有关项目 A 的内容,但在运行时出现以下错误。

无法加载文件或程序集“System.Web.Mvc”或其依赖项之一。找到的程序集的 list 定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

描述:在执行当前网络请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。

异常详细信息: System.IO.FileLoadException:无法加载文件或程序集“System.Web.Mvc”或其依赖项之一。找到的程序集的 list 定义与程序集引用不匹配。 (HRESULT 异常:0x80131040)

[FileLoadException: Could not load file or assembly 'System.Web.Mvc' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
[FileLoadException: Could not load file or assembly 'System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
System.Reflection.Assembly.Load(String assemblyString) +28
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: Could not load file or assembly 'System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516

[HttpException (0x80004005): Could not load file or assembly 'System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9915300
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

然后我必须构建项目 A 以使其在运行时加载。它有效,但项目 B 有同样的问题。

我进入了项目的/bin/文件夹并观察到一些奇怪的东西。假设我正在查看项目 A 的/bin

如果我构建项目 A,System.Web.Mvc.dll 文件的版本为 5.1.20129.0 如果我构建项目 B,相同的 DLL 文件会将其版本后退一步。至 5.0.11001.0

使用此信息,我可以理解为什么会触发错误,因为它认为的版本比那里的版本高。

此外,它没有与我们的 Git 存储库同步,因为没有其他开发人员遇到这个问题。

有人知道这是如何开始发生的吗?可能我该如何解决?

最佳答案

右键单击解决方案并转到通用属性下的启动项目,选择多个启动项目,选择您的两个项目。这将运行两个项目并解决您的问题。

关于c# - 无法加载文件或程序集 'System.Web.Mvc' 或其依赖项之一。 2个项目。一次只有一个会工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24187338/

相关文章:

C# 4.0 MemoryCache - 如何在对其依赖项进行更改时逐出依赖缓存条目

c# - 子实体如何从一个父实体移动到另一个父实体?

asp.net-mvc - MVC - bootstrap -form 控件与 form-group 一起出现在下一行

c# - 获取代码行号

c# - WPF:TabControl 和动态 TabItems

c# - 选择组合框期间出现空引用异常

javascript - SyntaxError : JSON. parse : unexpected character at line 1 column 1 of the JSON data, 为什么?

c# - 如何匹配区分大小写的用户名和密码

.net - EF 有订购的集合吗?相当于 NHibernate Bag Vs Set Vs List 世界中的 list

c# - ASP.NET MVC : Requested registry access denied when creating performance counters