在.csproj中添加预编译事件
<Target Name="SetBuildDate" BeforeTargets="BeforeBuild">
<PropertyGroup>
<BuildDate>$([System.DateTime]::UtcNow.ToString("yyyy-MM-dd HH:mm:ss"))</BuildDate>
</PropertyGroup>
<ItemGroup>
<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
<_Parameter1>BuildDate</_Parameter1>
<_Parameter2>$(BuildDate)</_Parameter2>
</AssemblyAttribute>
</ItemGroup>
</Target>
在代码中读取
using System.Reflection;
public static string GetBuildDate()
{
var assembly = Assembly.GetExecutingAssembly();
var attr = assembly.GetCustomAttributes<AssemblyMetadataAttribute>()
.FirstOrDefault(a => a.Key == "BuildDate");
return attr?.Value ?? "未知";
}