vs编译和网站部署
vs的生成工具在生成文件的时候,寻找需要的dll,会找C:\Windows\assembly这个目录,如果这个目录下面没有需要的dll文件,就会抛错误。
如果引用了C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll,我们看到属性中的“复制本地”的值为false,意思就是说不拷到本工程的bin目录下面。但是生成后的文件会去C:\Windows\assembly的目录去寻找System.Data.dll,肯定是可以找到的。
但是如果引用了System.Core.dll,如果部署的服务器上只安装了.net framework 2.0,就会发生错误。因为C:\Windows\assembly中没有这个dll,并且由于“复制本地”为false,bin目录中也没有这个dll,所以就会抛出找不到这个dll的异常。
总之:vs的生成,其实和本地的文件是没有关系的,只关心C:\Windows\assembly中有没有这个dll。但是,部署之后的网站,却关心两个方面,一个是C:\Windows\assembly目录,另外一个是本地的bin目录。