在运行时获取预编译 Azure Functions 程序集的构建时间

Get build time of Precompiled Azure Functions assembly during runtime

在运行时获取预编译 Azure Functions 程序集构建时间的最简单方法是什么?

例如使用通配符的 AssemblyInfo 和 AssemblyVersion 在执行 Azure Functions 项目时不适用于 Visual Studio 2017。

显示构建时间需要向某些人(通过 HTTP 触发器)显示部署确实完成了某事。

由于它是一个 Visual Studio 2017 项目,构建日期可以通过 .csproj 修改添加到程序集中,但这是一个好方法吗?

根据我的理解,我假设您可以在程序集中添加自定义属性并在 运行 期间读取发布日期时间,如下所示:

[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = false)]
public sealed class AssemblyPulishDateTime : Attribute
{
    private readonly long _ticks;

    public DateTime UtcPublishDateTime
    {
        get { return new DateTimeOffset(_ticks, TimeSpan.Zero).UtcDateTime; }
    }

    public AssemblyPulishDateTime(long utcTicks)
    {
        _ticks = utcTicks;
    }
}

然后编辑 AssemblyInfo.cs 并添加带有发布日期时间标记的 AssemblyPulishDateTime,如下所示:

[assembly: AssemblyPulishDateTime(636354478227030209)] //utc, 7/12/2017 9:17:02 AM

获取运行时间的发布时间,可参考以下代码片段:

Assembly assembly = typeof(Program).Assembly;
object[] attributes = assembly.GetCustomAttributes(typeof(AssemblyPulishDateTime), false);
if (attributes.Length == 1)
{
    var attribute = attributes[0] as AssemblyPulishDateTime;
    Console.WriteLine(attribute.UtcPublishDateTime);
}