我目前做一个项目,想通过反射取得版本号后更新。简单的说是,在运行此项目前先运行一个更新项目,在那个项目中通过反射机制(Assembly)去取得项目的版本号,如果版本号与网络上的不一致,则更新。取版本号,判断更新等都没问题了,但是在更新时,资源文件、.dll文件等都没问题,但是更新.exe时就出错了,因为在项目中通过Assembly.Load取得此.exe文件的版本号,系统提示“正在引用此.exe文件,所以无法更新"。但是如果不引用我又无法得到此版本号,请问高手,该如何解决!

解决方案 »

  1.   

    1.你的方法已经行不通了,需要另辟蹊径。
    2.可以这样:先用你的方法把版本号(.txt)保存在其安装路径下,再写个批处理(.bat)读取版本号,来与网络上的版本号比较。如果要更新,则直接覆盖文件,同时更新版本号。反之就不用处理了。
      

  2.   

    可以试试在更新程序中创建一个新AppDomain加载exe文件,然后卸载掉AppDomain