C# winform校验文件版本差异及版本号

界面
在这里插入图片描述

代码

using System.Diagnostics;

namespace VersionTool
{
    public partial class Form1 : Form
    {

        List<string> fileNmaes = new List<string>() { "PhotoMes.Base.dll", "PhotoMes.App.exe", "PhotoMes.Cameras.dll" };


        public Form1()
        {
            InitializeComponent();
        }

        static bool CompareFiles(string path1, string path2)
        {
            using (var stream1 = File.OpenRead(path1))
            using (var stream2 = File.OpenRead(path2))
            {
                byte[] buffer1 = new byte[4096];
                byte[] buffer2 = new byte[4096];

                while (true)
                {
                    int bytesRead1 = stream1.Read(buffer1, 0, buffer1.Length);
                    int bytesRead2 = stream2.Read(buffer2, 0, buffer2.Length);

                    if (bytesRead1 != bytesRead2 || !BufferEquals(buffer1, buffer2, Math.Min(bytesRead1, bytesRead2)))
                        return false;

                    if (bytesRead1 == 0 && bytesRead2 == 0)
                        break;
                }
            }

            return true;
        }

        static bool BufferEquals(byte[] buffer1, byte[] buffer2, int length)
        {
            for (int i = 0; i < length; ++i)
            {
                if (buffer1[i] != buffer2[i])
                    return false;
            }

            return true;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                textBox3.Text = "";
                foreach (var item in fileNmaes)
                {
                    bool isSameFileContent = CompareFiles(textBox1.Text + @$"\{item}", textBox2.Text + @$"\{item}");

                    if (isSameFileContent)
                        textBox3.Text += item + "  版本相同";
                    else
                    {
                        
                        FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(textBox1.Text + @$"\{item}");
                        // 获取版本号
                        string version = fileVersionInfo.FileVersion;
                        fileVersionInfo = FileVersionInfo.GetVersionInfo(textBox2.Text + @$"\{item}");
                        // 获取版本号
                        string version2 = fileVersionInfo.FileVersion;

                        string[] sv1 = version.Split('.');
                        string[] sv2 = version2.Split('.');

                        if(version == version2)
                        {
                            textBox3.Text += item + "  版本不同,版本号相同";
                        }
                        else
                        {
                            for (int i = 0; i < sv1.Length; i++)
                            {
                                if (Convert.ToInt16(sv1[i]) > Convert.ToInt16(sv2[i]))
                                {
                                    textBox3.Text += item + "  版本不同,路径1版本较新";
                                    break;
                                }
                                else if (Convert.ToInt16(sv1[i]) < Convert.ToInt16(sv2[i]))
                                {
                                    textBox3.Text += item + "  版本不同,路径2版本较新";
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                textBox3.Text += ex.Message;
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (FolderBrowserDialog DBO = new FolderBrowserDialog())
            {
                if (DBO.ShowDialog() == DialogResult.OK)
                {
                    textBox1.Text = DBO.SelectedPath;
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            using (FolderBrowserDialog DBO = new FolderBrowserDialog())
            {
                if (DBO.ShowDialog() == DialogResult.OK)
                {
                    textBox2.Text = DBO.SelectedPath;
                }
            }
        }
    }
}

相关推荐

  1. Swift对比版本

    2024-03-30 22:04:12       30 阅读
  2. ubuntu 查看版本号、查看内核版本

    2024-03-30 22:04:12       53 阅读
  3. Redis命令---查看版本

    2024-03-30 22:04:12       52 阅读
  4. Leetcode 165. 比较版本

    2024-03-30 22:04:12       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-30 22:04:12       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-30 22:04:12       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-30 22:04:12       87 阅读
  4. Python语言-面向对象

    2024-03-30 22:04:12       96 阅读

热门阅读

  1. 2023春秋杯冬季赛wp

    2024-03-30 22:04:12       40 阅读
  2. uniapp 未配置appkey或配置错误的解决

    2024-03-30 22:04:12       44 阅读
  3. Doris案例篇—Doris 在思必驰的应用实践

    2024-03-30 22:04:12       43 阅读
  4. kubelet源码阅读

    2024-03-30 22:04:12       42 阅读
  5. 【软考---系统结构设计师】IPv6

    2024-03-30 22:04:12       46 阅读
  6. 第九届蓝桥杯---航班时间python

    2024-03-30 22:04:12       47 阅读