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 环境。