精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
近期向客户提交个C#开发的软件的测试版本,在开发机器上运行正常,但是在客户机器上运行出错。错误截图类似下图:
因为当时没截图,所以和上图情况不太一样,不过类似,都是说CLR20r3,并且下面问答签名很多,但是报的异常是FileNotFoundException。 发布的软件上个版本正常,新版本不行,比较奇怪,开始认为是不可能的,客户可能环境有问题或者操作错了。后来亲自远程协助客户机器,发现确实这样。
软件有问题,一般去查更新。软件新版本涉及到一个组件的DLL,我就看DLL的项目,看它有什么表现。右键点击项目,再点击属性菜单,看到:
发现输出路径和提交的路径不一致。就是说生成的目标路径不是我提交给客户的路径,比如说,我把e:\a目录下的文件提交给客户用,但是这个项目输出路径不是e:\a,相当于提交的不是最新的,或和可执行文件版本不一致的dll文件。
依赖的dll不是最新版本的。在开发机器上是没事,在客户机器上不行。.net好像有文件签名,不一样,认为找不到,FileNotFoundException.
在开发机器上可以用,因为是用项目依赖,开发环境下可以找到最新的DLL,所以没事。而客户机器上没这样的线索,所以报错。
总之,CLR20r3问题来自于环境不匹配。