首页 新闻 会员 周边

跪求大神帮忙解决DLL更新后找不到方法,File.Delete+Move修改不了exe版本号

0
悬赏园豆:30 [已关闭问题] 关闭于 2014-12-02 09:43

背景:1个解决方案,包括3个项目:UI1,UI2和DLL1。UI1和UI2都引用DLL1。最终的打包安装是分为两个程序。安装之后两个运行都没问题。后来,修改了DLL1的一个方法内容,然后重新编译解决方案。为两个程序都更新了文件。

问题:更新之后在调用修改过的那个方法那就会出[ 未找到方法(Method Not Found)异常],而且这个问题,只在部分电脑上出现,有的一切正常,有的UI1出异常,有的UI2出异常,有的两个都出异常。

请问这是什么问题啊?要怎么解决啊?

PS:我查过,有人说是DLL版本号问题,但是我把三个项目版本号全更新过,还是有这个异常。

问题补充:

我解决这个问题,我的做法是将所有的项目版本号重新换了一个统一的:2.0.0.0(原来是1.0.0.0),然后重新生成,然后直接将文件压缩发到有问题的PC覆盖原来的文件。

而且还发现了修改版本号后更新不能解决问题的原因。

因为之前给目标PC更新都是用的一个自己写的一个远程下载替换文件的程序,但通过到目标PC查看文件发现,虽然那个下载程序替换了UI1和UI2(文件修改日期也是新的),但是目标PC上文件的版本号没变。

另外,UI1和UI2用到了Settings,我发现UI1和UI2的版本号和目标PC的有Settings是一样的。

为了验证我又通过那个下载程序更新了一次,发现我刚替换过来的版本号为2.0.0.0的文件版本号又变成了原来的1.0.0.0。
请问为什么版本号没变呢?

PS:那个下载程序覆盖文件用的是File.Move(souceFileName, destFileName)

 

再次补充:

我发现目标PC(4台)上的都装着百度杀毒和QQ电脑管家。

我在目标机器上做了两个测试:1、把两个软件都退了,然后再更新,版本号就能改过了;2、把两个软件的白名单加上了程序的目录及UI1,UI2和更新用的Update。然后再更新版本也能改变了。

通过第2个方法,有3台都可以了,但是第4台就不行。请问这是怎么回事呢?

Selway的主页 Selway | 初学一级 | 园豆:-6
提问于:2014-11-07 14:59
< >
分享
所有回答(2)
0

你的 UI1和UI2 是如何引用DLL1的?

Launcher | 园豆:45045 (高人七级) | 2014-11-07 16:25

就是引用的项目

支持(0) 反对(0) Selway | 园豆:-6 (初学一级) | 2014-11-07 17:24

@Selway: 你的应用程序更新,是使用的 Click-Once 技术吗?

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-11-07 17:27

@Launcher: 不是,我的方法比较落后用的是自己写的一个程序,具体请看一下我的补充。

先谢谢你关注问题。

支持(0) 反对(0) Selway | 园豆:-6 (初学一级) | 2014-11-07 17:48

@Selway: 那就是你自己写的更新程序有问题,这个我管不了,没有用过,也没有源码。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-11-07 17:50

@Launcher: 那你说File.Move(souceFileName, destFileName)替换的文件版本号不会变吗?

支持(0) 反对(0) Selway | 园豆:-6 (初学一级) | 2014-11-07 17:56

@Selway: 这个问题太简单了,你自己写段代码就能测试出来。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-11-07 17:57

@Launcher: 而且我还发现,之前没用过UI的PC(没有生成过Settings的Config文件)的那些机器替换后的文件就是新的版本号,而只有存在Config文件的那些版本号才不变。

支持(0) 反对(0) Selway | 园豆:-6 (初学一级) | 2014-11-07 17:58

@Launcher: 呼叫,我刚测试发现,我自己的机器上有Settings留下的Config,可以修改版本号,但是别的机器上就更新不了

支持(0) 反对(0) Selway | 园豆:-6 (初学一级) | 2014-11-07 18:09

@Launcher: 

我发现目标PC(4台)上的都装着百度杀毒和QQ电脑管家。

我在目标PC上做了两个测试:1、把两个软件都退了,然后再更新,版本号就能改过了;2、把两个软件的白名单加上了程序的目录及UI1,UI2和更新用的Update。然后再更新版本也能改变了。

通过第2个方法,有3台都可以了,但是第4台就不行。请问这是怎么回事呢?

支持(0) 反对(0) Selway | 园豆:-6 (初学一级) | 2014-11-08 10:41
0

你发的是 release版本吗?

debug版本有个pdb文件 那个是缓存调试信息的 要把那个删除掉

南昌炒粉 | 园豆:760 (小虾三级) | 2014-11-11 02:11

你的意思是如果有这个pdb文件,会导致更新不了版本号?

支持(0) 反对(0) Selway | 园豆:-6 (初学一级) | 2014-11-11 16:24

@Selway: 正式版本是 release的 不会有pdb文件 你试试

支持(0) 反对(0) 南昌炒粉 | 园豆:760 (小虾三级) | 2014-11-11 19:25

@南昌炒粉: 这个对版本号没影响吧?DEBUG生成的和RELEASE生成的版本一样的啊

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