背景: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台就不行。请问这是怎么回事呢?
你的 UI1和UI2 是如何引用DLL1的?
就是引用的项目
@Selway: 你的应用程序更新,是使用的 Click-Once 技术吗?
@Launcher: 不是,我的方法比较落后用的是自己写的一个程序,具体请看一下我的补充。
先谢谢你关注问题。
@Selway: 那就是你自己写的更新程序有问题,这个我管不了,没有用过,也没有源码。
@Launcher: 那你说File.Move(souceFileName, destFileName)替换的文件版本号不会变吗?
@Selway: 这个问题太简单了,你自己写段代码就能测试出来。
@Launcher: 而且我还发现,之前没用过UI的PC(没有生成过Settings的Config文件)的那些机器替换后的文件就是新的版本号,而只有存在Config文件的那些版本号才不变。
@Launcher: 呼叫,我刚测试发现,我自己的机器上有Settings留下的Config,可以修改版本号,但是别的机器上就更新不了
@Launcher:
我发现目标PC(4台)上的都装着百度杀毒和QQ电脑管家。
我在目标PC上做了两个测试:1、把两个软件都退了,然后再更新,版本号就能改过了;2、把两个软件的白名单加上了程序的目录及UI1,UI2和更新用的Update。然后再更新版本也能改变了。
通过第2个方法,有3台都可以了,但是第4台就不行。请问这是怎么回事呢?
你发的是 release版本吗?
debug版本有个pdb文件 那个是缓存调试信息的 要把那个删除掉
你的意思是如果有这个pdb文件,会导致更新不了版本号?
@Selway: 正式版本是 release的 不会有pdb文件 你试试
@南昌炒粉: 这个对版本号没影响吧?DEBUG生成的和RELEASE生成的版本一样的啊