错误情景
程序在本地运行正常,但是发布到服务器上报错:未能加载文件或程序集XXX。
错误含义
发布到server的程序缺少错误中提到的程序集。具体来说就是server上程序的bin目录缺少错误信息中提到的dll文件。
解决方案
在vs中查看程序引用,找到缺失的程序集,F4查看属性,将复制到本地属性修改为true,重新发布程序即可。
F4查看程序集引用的属性
将复制本地修改为true
理解
通过nuget或者其他库管理工具引用的程序集(dll)会被放到计算机的特定目录进行统一管理。当引用中配置【复制到本地】为true时,vs会将被引用的dll复制到项目的bin目录下,否则则直接引用这些库的地址,所以,此时虽然项目的bin目录下没有这些dll,但是程序仍然能够正常运行。本地正常运行的程序发布到server上时,server上并没有包管理工具,所以这些没有被复制到本地的引用就无法找到了,故报此错。