ASP.NET Web Pages检测到冲突的版本:指定的版本是“1.0.0.0”,但bin中的版本是“2.0.0.0”,出现在ASP.MET MVC 3中。

33
安装了 Microsoft Web Helper 后,我遇到了以下错误:
“检测到 ASP.NET Web Pages 的版本冲突:指定的版本为“1.0.0.0”,但 bin 中的版本为“2.0.0.0”。要继续,请从应用程序的 bin 目录中删除文件或删除 web.config 中的版本规范。”
根据我所读的内容,可能是我尝试安装了错误的版本。但是我该如何纠正呢? 到目前为止,我已经:
卸载了 Microsoft Web Helper 删除了 bin 文件夹的所有内容并重新构建了项目 使用所有默认值替换了我的 web.config 文件(假设我没有在此处更改太多内容或我的项目)。
但是这些方法都没有奏效(就像网上建议的那样)。请问有什么提示可以帮我解决这个问题吗?我已经一直在处理这个问题几个小时了。

3个回答

66

我在升级到VS 2013 Express Preview版本后遇到了这个问题。

然后我注意到web.config文件中有一行是:

 <add key="webpages:Version" value="1.0.0.0" />

我将它更改为我的 bin 文件夹中的 system.web.webpages.dll 版本:

 <add key="webpages:Version" value="3.0.0.0" />

......问题最终被解决了(在您的情况下,我猜是2.0.0.0版本)。


你知道这是指哪个dll吗? - MushinNoShin
我相信这是指System.Web.WebPages dll。 - Stuart Hallows

5

这只是 Dave 回答的一个补充,但不要忘记在所有视图文件夹中也更改此内容,如果您还没有更改。 最好使用 VS 的“替换文件”功能(Ctrl+Shift+H),以确保您没有遗漏任何出现。


0
我想补充以下内容:
在我的情况下,我通过以下方式解决了问题。首先(重要!),我将目标框架更改为4.6.1,重新加载了解决方案,然后使用NUGET升级了二进制包。
然后,在按照上述解决方案描述修复问题后,我还遇到了以下错误:
配置错误 说明:处理所需的配置文件时发生错误以服务此请求。请查看下面的具体错误详细信息并相应地修改您的配置文件。 解析器错误消息:创建系统.web.webPages.razor/host配置节处理程序时出错:无法加载文件或程序集“System.Web.WebPages.Razor,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其某个依赖项。找到的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040) 程序集加载跟踪:以下信息有助于确定为什么无法加载程序集“System.Web.WebPages.Razor,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”。

Web.config的相关部分如下:

<configSections>
    <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>

将其更改为:

  <configSections>
    <sectionGroup name="system.web.webPages.razor"  
        type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, 
            System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, 
            PublicKeyToken=31BF3856AD364E35"  >
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, 
            System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, 
            PublicKeyToken=31BF3856AD364E35"  />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, 
            System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, 
            PublicKeyToken=31BF3856AD364E35"  />
    </sectionGroup>
  </configSections>

它立即开始工作。

请注意:

  • 我还将每个System.Web.*程序集的属性复制本地更改为true。

  • 在某些项目中,部分组sectionGroup name="system.web.webPages.razor"可能也会丢失 - 在这种情况下,您需要添加它。

  • 如果您计划升级到MVC 4,请先升级到MVC 3,然后再进行最后一步操作,因为MVC 4中有一些破坏性变化(详见此处)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接