过去几个月我一直在研究mvc4网络应用程序。直到星期五,当我在nuget中运行更新包以确保我拥有最新版本的库时,一切都运行良好。
现在,当我尝试查看应用程序中的任何内容时,它会告诉我它会收到错误
Could not load file or assembly 'System.Web.WebPages.Razor, Version=3.0.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)
我已经检查了我的web.config和我的packages.config,但我没有引用System.Web.WebPages.Razor, Version=3.0.0.0
我已将一个dependentAssembly块添加到我的web.config版本2.0.0.0
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
并确保我的views目录中的web.config也指定了v2.0.0.0
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
我还确保我的引用中引用的版本是2.0.0.0。我试过删除它并读取它。我已经尝试确保服务器安装了最新版本的.net框架。
我已在服务器和本地测试了这一点并获得了相同的错误消息。
本地我在错误日志LOG: Post-policy reference: System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
中看到了这一点但是我找不到任何导致这种情况的信息。
我正在使用Visual Studio 2012 premium开发它。
有人有什么想法吗?
答案 0 :(得分:12)
我已经检查了我的web.config和我的packages.config,而且我在哪里引用System.Web.WebPages.Razor,Version = 3.0.0.0
那是你的问题。我自己曾经遇到过类似的问题。但是,它往往主要发生在一个解决方案中处理多个项目时;我不确定这是否适用于您的情况。尽管如此,问题归结为实际的项目引用已被“升级”,但您的web.config和packages.config 不引用该升级的包。如果你进入你的项目参考并查看Razor参考的属性,我会打赌美元在那里说3.0.0.0。您可以删除引用并通过浏览较低版本软件包的bin目录重新添加它,也可以完全升级它。
就像我说的,当你升级一个项目而不是另一个项目时,这通常发生在多项目解决方案中。解决这个问题的最简单方法是管理整个解决方案的nuget包。然后,您可能会看到Razor的多个列表,其中一个项目被检查一个或多个项目但不是一些项目,反之亦然。删除旧版本的旧版Razor(取消选中相关项目)并应用。然后返回到新版本的Razor并将其应用于它缺少的所有项目。
答案 1 :(得分:3)
我遇到了同样的问题,我的WCF服务无法运行。解决方案是从我的BIN文件夹中删除System.Web.Mvc.dll。
答案 2 :(得分:0)
对我而言,我所要做的就是将'特定版本'从False更改为True并开始工作。
答案 3 :(得分:0)
右键单击程序集(在“参考”中),在其内容菜单上选择“属性”,在Visual Studio的“属性”选项卡上查看其属性。在查找Copy Local属性并确保其设置为True。
答案 4 :(得分:0)