本帖最后由 codeck 于 2014-02-05 11:53:44 编辑

解决方案 »

  1.   

    可以用clickonce
    http://xxx/xx.exe,必须先下载才能得到版本号。
    不过你可以在IIS上部署一个网站,在服务器上得到文件版本,并且返回给客户端,客户端再判断是否需要下载。
      

  2.   

    一般都会部署一个xml文件到IIS上。xml里面描述了服务器上的版本。
    软件读取xml,决定是否需要更新。
      

  3.   

    如果是网站暴露dll的最新发布时间,例如你可以写一个ashxusing System;
    using System.IO;
    using System.Linq;
    using System.Web;namespace YourNamespace
    {
        /// <summary>
        /// 返回网站dll最新更新时间,方便维护、调试网站。
        /// </summary>
        public class LatestPublished : IHttpHandler
        {        public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                var dir = new DirectoryInfo(context.Server.MapPath("~/bin"));
                DateTime result = 最新发布时间(dir);
                context.Response.Write(result.ToString("yyyy-M-d H:m:s"));
            }        private DateTime 最新发布时间(DirectoryInfo directoryInfo)
            {
                return (from f in directoryInfo.EnumerateFiles()
                        let t = f.LastWriteTime
                        select t).Max();
            }        public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }这样,通过一个简单的http url就可以下载到网站最新更新时间。至于说自动获取并内容,这肯定不是asp.net自己可以做到的。你可能需要一个windows service小程序去查询网站最新更新时间,下载每一个文件,替换每一个文件。实际上,自动更新网站,是比较危险的。这并不是像每一个人自己去更新自己的某个桌面程序那样可以分散风险。因此如果是我,也顶多会写一个程序去扫描一遍我的所有网站,或者让给每一个网站的进程启动时给我的电子邮箱里发送一个邮件,仅此而已。至于网站更新,应该谨慎考虑。
      

  4.   

    嗯,我看成你要更新网站了。如果是更新本地的应用,那么clickonce打包发布的程序就足够智能了,而且重新发布这样的网站只是分分钟的事情(假设需要15秒钟打包,一分钟上传clickonce更新部分)
      

  5.   

    请问用什么方法从服务器上得到文件版本?谢谢System.Diagnostics.FileVersionInfo.GetVersionInfo
      

  6.   

    请问用什么方法从服务器上得到文件版本?谢谢System.Diagnostics.FileVersionInfo.GetVersionInfo“提示:不支持 URI 格式。”
      

  7.   

    请问用什么方法从服务器上得到文件版本?谢谢System.Diagnostics.FileVersionInfo.GetVersionInfo“提示:不支持 URI 格式。”
    不是告诉你了么?在服务器上得到文件版本。谁让你在客户端上调用的。