AIGC标识 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 环境。

posted @ 2026-09-09 09:13  dcrenl  阅读(44)  评论(0)    收藏  举报