首页 新闻 会员 周边 捐助

谁能知道这个报错的原因,以及为什么这样能解决??

0
[已解决问题] 解决于 2014-10-20 10:03

见:http://www.cnblogs.com/tider1999/p/4036179.html

泰德的主页 泰德 | 初学一级 | 园豆:6
提问于:2014-10-19 23:06
< >
分享
最佳答案
0

我见过类似的错误,直接的原因就是VS自己能找到那个引用的dll(看图片上的路径应该是解析到了C:\Program Files (x86)\Microsoft ASP.NET下面),所以可以编译通过,但是运行时程序只能从GAC和自己的bin找,都找不到,就报错了。设置那个Copy Local就是让VS在编译的时候把它找到的那个copy到bin下,就正常了。

背后的原因我有一部分是猜测:VS能找到是因为对VS安装过MVC框架,VS在工程文件里面的引用没有写明路径,或者写明的路径没找到就会从C:\Program Files (x86)\Microsoft ASP.NET下去解析引用。你可以看下引用的其他MVC程序集的路径是指向哪里的,是不是指向其它地方。或者是其它的也在同样的地方,但是Copy Local本来就是True。

现在的大部分情况下,引用的MVC应该是通过nuget管理的,但是VS2010默认是没有nuget的,可能导致VS对于安装和没有安装nuget两种情况下的MVC工程的处理有些bug。

奖励园豆:5
winnow | 菜鸟二级 |园豆:292 | 2014-10-20 00:35

我用的是vs2012。我看了一下,其他MVC程序集的路径是指向也是 C:\Program Files (x86)\Microsoft ASP.NET 。

还有,就是我看了一下我这边的其他项目,Copy Local都是false;并且基本一样的项目,也没有报错,就这个项目,以前也不报错,昨天用Github 提交后就开始报错。

泰德 | 园豆:6 (初学一级) | 2014-10-20 09:44
其他回答(1)
0

楼上基本说对了,如果你不想这样解决(Copy to local),你也可以自己用资源管理器将相关的DLL 复制到BIN文件即可。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-10-20 09:35

我测试了一下,把bin下面的相关dll删除,编译通过,运行报错,把dll拷入bin正常了。看来的确是这个原因。

支持(0) 反对(0) 泰德 | 园豆:6 (初学一级) | 2014-10-20 10:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册