前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >版本检查小工具

版本检查小工具

作者头像
小蜜蜂
发布2019-09-05 16:51:34
1.5K0
发布2019-09-05 16:51:34
举报
文章被收录于专栏:明丰随笔明丰随笔

小工具名称: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小工具了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 明丰随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档