C#获得项目最后编译时间
C#获得项目最后编译时间
效果
具体格式可以自定义
核心代码
string GetCompileVersion()
{
string OriginVersion = "" + System.IO.File.GetLastWriteTime(this.GetType().Assembly.Location);
int MsgCnt = 0;
string year = "";
string month = "";
string day = "";
string hour = "";
string min = "";
string sec = "";
for (int i = 0; i < OriginVersion.Length && MsgCnt < 6; i++)
{
char ch = OriginVersion[i];
if (ch >= '0' && ch <= '9')
{
switch (MsgCnt)
{
case 0: year += ch; break;
case 1: month += ch; break;
case 2: day += ch; break;
case 3: hour += ch; break;
case 4: min += ch; break;
case 5: sec += ch; break;
}
}
else
{
MsgCnt++;
}
}
while (year.Length < 4) year = "0" + year;
while (month.Length < 2) month = "0" + month;
while (day.Length < 2) day = "0" + day;
while (hour.Length < 2) hour = "0" + hour;
while (min.Length < 2) min = "0" + min;
while (sec.Length < 2) sec = "0" + sec;
return year + month + day + hour + min + sec;
}
使用
public MainWindow()
{
InitializeComponent();
CompileTime.Text = GetCompileVersion();
}
原理
- 使用
System.IO.File.GetLastWriteTime
方法获取程序集文件(即.dll
或.exe
文件)的最后修改时间——可以间接反映程序集的最后编译时间。 - 定义六个字符串变量
year
、month
、day
、hour
、min
和sec
,用于存储相应的日期和时间组件。 - 通过一个
for
循环遍历OriginVersion
字符串中的每个字符。如果字符是数字(介于 '0' 和 '9' 之间),则根据当前的MsgCnt
值将数字字符追加到相应的变量中。 - 若长度不足其应有的长度(年4位,其他都是2位),则在它们的前面添加 '0'。
- 最后,将所有这些组件串联起来,形成一个格式为
yyyyMMddHHmmss
的字符串。
参考
DateTime 结构 (System) | Microsoft Learn
C#获得项目最后编译时间的更多相关文章
- 如何减少 webpack 构建 vue 项目的编译时间
背景 我司前端项目框架主要是 vue,多个项目聚集在同一个仓库下,共用公共组件.页面.工具函数等.基于以上前提,我们需要对不同的项目分别进行打包,并解决单页应用强制刷新引起的问题,所以没有使用 vue ...
- 避免UE4项目VS中误改源码.h文件导致编译时间长
最近几天两次触发VS中误改UE4源码头文件,导致需要编译大量源码的情况:再好的习惯也有不可靠的时候,还是需要可靠方案解决这个问题:官方提供了预编译版本(即从Launcher中下载的版本),但是对于程序 ...
- API查看Web App发布版本+编译时间+环境变量
项目环境: JDK7+Maven3.04 项目架构:SpringMVC 方法一:API访问Maven生成的MANIFEST.MF 1. 在pom.xml中添加jar包支持 <dependency ...
- 如何把apk编译时间和最后次git commit的sha值,写入到app中
需求背景:我们修复Bug的时候,频繁提交APK包,导致测试同学搞不清哪个包才是最新的 比如一个版本3.0.1,我们可能后续基于这个版本陆续提交了好几个修复包 同时,如果服务端ip地址能在界面上配置的话 ...
- C#获取程序集的版本号和最后编译时间
C#获取程序集的版本号:string ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToStrin ...
- 并行编译加快 VS C++ 项目的编译速度
最近编译的项目都比较大,话说自己的电脑配置还行,但编译所花的时间还是很长,遇到需要重新编译整个项目的时候真的有回宿舍睡一觉的冲动.昨天一不小心被我发现了一款软件Xoreax IncrediBuild ...
- 项目androidAnt编译打包Android项目
时间紧张,先记一笔,后续优化与完善. Ant编译打包Android项目 在Eclipse中对Android项目停止编译和打包如果项目比较大的话会比较慢,所以改为Ant工具来停止编译和打包 Ant环境配 ...
- 并行编译加快VS C++项目的编译速度
最近编译的项目都比较大,话说自己的电脑配置还行,但编译所花的时间还是很长,遇到需要重新编译整个项目的时候真的有回宿舍睡一觉的冲动.昨天一不小心被我发现了一款软件Xoreax IncrediBuild ...
- Nodejs+Grunt配置SASS项目自动编译
Nodejs+Grunt配置SASS项目自动编译 早前听说Nodejs和Grunt很强大,特别是用来构建自动化的前端开发,更是强大无比.但一直碍于自己掌握的技术有限,不敢深入,也未曾深入下去.最近在开 ...
- 基于.net core实现项目自动编译、并生成nuget包
近期想对自己的项目增加自动编译并生成nuget包,网上资料不少.但总还有迷糊的时候.首先:此解决方案包含多种版本的项目,如:有编译必须是x86平台,以及还有传统的.net foramework项目,以 ...
随机推荐
- xxe学习笔记
什么是xxe XXE(XML External Entity Injection)全称为XML外部实体注入,由于程序在解析输入的XML数据时,解析了攻击者伪造的外部实体而产生的.例如PHP中的simp ...
- selenium 进入页面提示 503 Service Temporarily Unavailable
进入三级页面提示503 Service Temporarily Unavailable,如果手动刷新页面重新加载成功 网上看都是如何配置及原因的,没告诉如何解决 于是我想,如果是这样的话,执行刷新操作 ...
- 附035.Kubernetes_v1.25.3高可用部署架构二
目录 部署组件 kubeadm介绍 kubelet介绍 kubectl介绍 方案概述 方案介绍 部署规划 节点规划 主机名配置 变量准备 互信配置 环境初始化 部署高可用组件 HAProxy安装 Ke ...
- [tldr] 配置windows terminal使用git bash
windows terminal默认使用power shell作为shell,但是power shell不好用,还是习惯linux的命令行行为. 参考Windows Terminal 配置 Git B ...
- rust学习笔记(3)
变量 变量默认是不可变的 不能使用没有初始化的变量 作用域 变量离开作用域之后会直接释放, 无法再次使用; 在内部代码块中定义的变量会导致外部的变量被遮蔽 类型转换 部分类型可以隐式转换, 部分类型需 ...
- 痞子衡嵌入式:记录为i.MXRT1060更换较大容量Flash(IS25LP064A_IS25LP128F)导致二级App异常启动问题解决全过程(上篇)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是为i.MXRT1060更换较大容量Flash导致二级App异常启动问题. 痞子衡最近在支持一个 RT1062 国外客户项目,客户在项目预 ...
- ATT&CK实战系列(三)红日靶场3
本次打靶练习是一个黑盒测试.没有密码,我们的目标是拿到域控制器的权限,并找到其中的重要文件. 网络拓扑 网卡设置 centos为出网机,第一次运行,需重新获取桥接模式网卡ip. 需重启网络服务serv ...
- 正则表达式--java进阶day06
1.正则表达式 2.正则表达式的规则.使用 3.字符类讲解 如图,单独一个a满足正则表达式的规则,所以返回true 当删去[]后,正则表达式中的规则就会变为必须是abc,否则不满足条件,即使有一个a ...
- 【SpringMVC】RESTful CRUD
RESTful CRUD REST:即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方 ...
- $.ajax jsonp parsererror
场景重现 通过$.ajax()发起的跨越请求代码如下: $.ajax({ dataType: "JSONP", type: "GET", url: " ...