run in this way,   no why,   only for you heart
CSDN博客(点击进入) CSDN
51CTO(点击进入) 51CTO

“WebPageBase”在未引用的程序集中定义。必须添加对程序集“System.Web.WebPages, Version=1.0.0.0,Culture=neutral....."的引用

报错内容:
错误 CS0012 类型“WebPageBase”在未引用的程序集中定义。必须添加对程序集“System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的引用。

报错截图:
这里写图片描述
分析:
1.首先去项目的配置文件web.config中查看下 引用程序集的版本:

<add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
//版本为2.0.0.0

这与我们的报错中提示需要版本1.0.0.0版本不和,如果你的web.config中没有针对该程序集其他的配置(具体会在下面分析这种情况第4点),那么出错原因可能是你配置的问题,可以尝试将这里配置版本改为1.0.0.0版本,重新编译看是否成功。

2.若仍报错,说明你的程序框架中可能没有包含这个版本的程序集,先去程序中的引用中查看程序集:
这里写图片描述
这里显示版本为3.0.0.0,而我们刚刚配置的以及报错需要的是1.0.0.0版本,说明这个版本是不能用的,右击该程序集将其移除,然后去添加1.0.0.0版本

3.添加1.0.0.0版本操作:右击项目中的引用–> 添加引用:
这里写图片描述
进入搜索程序集,然后添加:
这里写图片描述
到这里再次重新编译下,看是否还报错

4.如果还报错,恭喜你可能遇到和我一样的问题了。。。
在上面第1点说配置web.config还会有其他配置,我的项目中除了第1点中的配置,还加了版本兼容的配置,如下:

<dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
//这种包括了0.0.0.0到3.0.0.0版本

所以在第2,3点中版本不一致的情况的在 版本兼容的配置 下都是不用去考虑的。那么项目为什么还会报错,是因为程序框架中没有这个程序集的文件,到你的代码根目录中将框架中查看下 是否含有报错的程序集,我的项目根目录中是空的,添加后编译通过,代码运行正常。

5.那么怎么去根目录中找呢?
如果你的情况和我一样,再次去看下报错提示:
这里写图片描述
这里说了没有找到这个文件,就是报错程序集文件,去根目录添加就可以了。


以上是个人经验,没有大量试验过,有错误或不足之处,望指出

posted @ 2018-08-22 18:38  _小龙人  阅读(820)  评论(0编辑  收藏  举报