版本检查小工具

2019-09-05 16:51:34 浏览数 (1)

小工具名称:binchecker

主要是检查Bin目录下的dll文件。

我们在系统在发到live环境之后,有时候会因为发布的dll文件不是最新的版本,才导致live defect。因为live环境一般是发布专员控制,我们普通的开发人员一般没有权限去查看dll的版本,所以我们需要一种机制来检查发布之后的dll文件的版本是不是最新的。本文就会一步一步教我们如何创建一个版本检查的小工具,让我们舒舒服服的检查live上的dll版本。

小工具具体功能,可以显示以下信息:

文件名称

文件版本号

最后编译时间

属于哪个程序集

实现的步骤

1. 定位bin文件夹目录

代码语言:javascript复制
var assemblyFolder = AppDomain.CurrentDomain.RelativeSearchPath;
if (string.IsNullOrWhiteSpace(assemblyFolder))
{
  assemblyFolder = AppDomain.CurrentDomain.BaseDirectory;
}

2. 获取bin的所有dll文件

代码语言:javascript复制
string[] filepaths = Directory.GetFiles(assemblyFolder, "*.dll");

3. 定义FileStatus类,表示dll文件的状态

代码语言:javascript复制
class FileStatus
{
  public string Name { get; set; }

  public Version Version { get; set; }

  public DateTime LastBuildTime { get; set; }

  public DateTime LastWriteTime { get; set; }

  public List<ReferencedAssembly> ReferencedAssemblies { get; set; }
}

class ReferencedAssembly
{
  public string Name { get; set; }

  public Version Version { get; set; }
}

4. 定义GetStatus方法

代码语言:javascript复制
private static FileStatus GetStatus(string file)
{
  try
  {
    var fileInfo = new FileInfo(file);
    var assembly = Assembly.Load(Path.GetFileNameWithoutExtension(file));
    var referencedAsseblies = assembly.GetReferencedAssemblies().Select(
        assm => new ReferencedAssembly() { Name = assm.Name, Version = assm.Version }
      ).ToList();
    var version = assembly.GetName().Version;

    return new FileStatus()
    {
      Name = fileInfo.Name,
      Version = version,
      LastWriteTime = fileInfo.LastWriteTime,
      ReferencedAssemblies = referencedAsseblies
    };
  }
  catch
  {
    // Squash any exceptions
  }

  return new FileStatus() { Name = file };
}

5. 完整运行:

代码语言:javascript复制
var assemblyFolder = AppDomain.CurrentDomain.RelativeSearchPath;
if (string.IsNullOrWhiteSpace(assemblyFolder))
{
  assemblyFolder = AppDomain.CurrentDomain.BaseDirectory;
}
var fileStatuses = Directory.GetFiles(assemblyFolder, "*.dll").Select(file => GetStatus(file)).ToList();

通过本文的知识,我们自己就可以分分钟新建一个binchecker小工具了。

0 人点赞