见:http://www.cnblogs.com/tider1999/p/4036179.html
我见过类似的错误,直接的原因就是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。
我用的是vs2012。我看了一下,其他MVC程序集的路径是指向也是 C:\Program Files (x86)\Microsoft ASP.NET 。
还有,就是我看了一下我这边的其他项目,Copy Local都是false;并且基本一样的项目,也没有报错,就这个项目,以前也不报错,昨天用Github 提交后就开始报错。
楼上基本说对了,如果你不想这样解决(Copy to local),你也可以自己用资源管理器将相关的DLL 复制到BIN文件即可。
我测试了一下,把bin下面的相关dll删除,编译通过,运行报错,把dll拷入bin正常了。看来的确是这个原因。