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

时间:2017-07-11 14:37:33

标签: c# azure azure-functions

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

e.g。使用通配符的AssemblyInfo的AssemblyInfo在执行Azure Functions项目时不能与Visual Studio 2017一起使用。

显示某些人(通过HTTP触发器)部署实际上已经完成了某些事情,需要显示构建时间。

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

1 个答案:

答案 0 :(得分:1)

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

[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);
}