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项目,以 ...
随机推荐
- dig命令命令常见用法
域名结构 主机名.次级域名.域名.根域名 host. sld .tld .root 几种常见的解析类型 A记录 CNAME txt记录 dig命令命令常见用法 dig,"domain inf ...
- OpenCV开发笔记(八十三):图像remap实现哈哈镜效果
前言 对图像进行非规则的扭曲,实现哈哈镜就是一种非常规的扭曲方式,本文先描述remap的原理,然后通过remap实现哈哈镜. Demo 基于原始算法,可以进行二次开发 ...
- 地球OL攻略 —— 某应届生求职总结
某应届生的苦逼求职总结 1.自我介绍,阐述一下自己过去的情况 2.目前的就业情况以及从事的就业方向 3.你在面试的时候遇到什么困难?是怎么帮忙解决的 4.当初为什么会选择选择这一行? 5.分享一下学习 ...
- 自行为一加6编译Postmarket os内核
序 在为自己的一加6刷上PostmarketOS后突然某一天想使用它的照相机功能.原因是想到使用pmos拍照后笔者可以直接使用scp指令来传输手机相片到自己运行着GNU/Linux的电脑上,就感到相对 ...
- 『Plotly实战指南』--折线图绘制进阶篇
上一篇介绍了Plotly绘制折线图的基础知识和数据预处理的技巧, 本文将重点探讨如何利用Plotly实现多线折线图的布局设计以及动态折线图的实现, 让我们一起掌握进阶的折线图绘制技巧. 1. 多折线图 ...
- rot-偏移,ascii,md5爆破
题目: 破解下面的密文: 83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 ...
- UNIQUE VISION Programming Contest 2025 Spring (AtCoder Beginner Contest 398) (A~F) 补题+题解
A - Doors in the Center 签到题,直接构造即可. 点击查看代码 #include<bits/stdc++.h> using namespace std; #defin ...
- 环境配置-Git和GitLab
Git安装 到官网下载安装包,直接一路next即可. https://git-scm.com/download/win 配置用户名和用户邮箱 $ git config --global user.na ...
- Java的IO模型、Netty原理详解
1.什么是IO 虽然作为Java开发程序员,很多都听过IO.NIO这些,但是很多人都没深入去了解这些内容. Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的 ...
- 记一个.NET AOT交叉编译时的坑
记一个.NET AOT交叉编译时的坑 背景: 使用.NET9开发的Avalonia项目需要部署到Linux-arm64 踩坑: 根据官方AOT交叉编译文档配置后执行打包 dotnet publish ...