C# 程序发布时加入发布时间

1. 修改 .csproj 文件‌

在 中添加以下配置,利用 MSBuild 的时间函数生成时间戳:

复制代码
<PropertyGroup>
    <!-- 其他配置... -->
    <AssemblyMetadata Include="BuildTime" Value="$([System.DateTime]::Now.ToString('yyyy-MM-dd HH:mm:ss'))" />
</PropertyGroup>

注意‌:(\[System.DateTime\]::Now...) 是 MSBuild 的属性函数语法,能确保在编译时刻获取时间。如果使用的是较旧版本的 MSBuild 或特定 CI 环境,也可以使用 (DateTime) 变量(需确保格式正确,如 yyyy-MM-dd HH:mm:ss)。‌注意‌:(\[System.DateTime\]::Now...) 是 MSBuild 的属性函数语法,能确保在编译时刻获取时间。如果使用的是较旧版本的 MSBuild 或特定 CI 环境,也可以使用 (DateTime) 变量(需确保格式正确,如 yyyy-MM-dd HH:mm:ss)。

‌2. 在代码中读取
复制代码
using System;
using System.Reflection;
using System.Linq;

public static string GetBuildTime()
{
    var assembly = Assembly.GetExecutingAssembly();
    // 查找名为 "BuildTime" 的自定义元数据
    var attribute = assembly.GetCustomAttribute<AssemblyMetadataAttribute>();
    
    // 如果有多个元数据,可能需要筛选 Key
    var buildTimeAttr = assembly.GetCustomAttributes<AssemblyMetadataAttribute>()
                                .FirstOrDefault(a => a.Key == "BuildTime");

    if (buildTimeAttr != null)
    {
        return buildTimeAttr.Value;
    }
    
    return "Unknown";
}

时间准确,反映实际编译时刻。

不依赖文件系统,不受部署方式(如 ZIP 解压、复制)影响。

适合 CI/CD 环境。

相关推荐
小羊没烦恼!5 小时前
在Scrum中实施敏捷建模
java·开发语言·windows·算法·c#
Lost of 程序猿6 小时前
建造者模式实战:告别“十参数构造函数“的数据导出任务
后端·设计模式·c#·asp.net
mudtools8 小时前
在.NET现有系统中快速集成飞书任务分配能力
后端·c#·.net
工具派11 小时前
Word文档太大怎么拆分?段落结构与两种拆法的边界实测
开发语言·c#·word
潜龙952711 小时前
需求文档一键变测试用例:手工用例智能生成平台
开发语言·c#
Lost of 程序猿11 小时前
命令模式实战:把“下单后的动作“打包成可执行的任务
后端·设计模式·c#·asp.net·命令模式
淡海水11 小时前
16-01-C#数据结构源码-附录A-术语表
unity·c#·游戏引擎·il2cpp
小羊没烦恼!12 小时前
【译】利用Asp.net MVC处理文件的上传下载
开发语言·缓存·c#·word·powerpoint·.net
波力海苔夹心脆67512 小时前
C# 海康威视摄像头二次开发入门:HCNetSDK 登录、实时预览、云台控制、录像与抓图(WinForms 实战)
开发语言·windows·经验分享·tcp/ip·c#
淡海水12 小时前
16-03-C#数据结构源码-附录C-参考资源
unity·c#·游戏引擎·il2cpp