C# 在运行时获取预编译Azure函数程序集的生成时间

C# 在运行时获取预编译Azure函数程序集的生成时间,c#,azure,azure-functions,C#,Azure,Azure Functions,在运行时获取预编译Azure函数程序集的构建时间的最简单方法是什么 e、 g.在执行Azure功能项目时,使用通配符的AssemblyInfo和AssemblyVersion不适用于Visual Studio 2017 显示构建时间将需要(通过HTTP触发器)向某些人显示deploy实际做了什么 由于它是一个Visual Studio 2017项目,可以通过.csproj修改将生成日期添加到程序集,但这是一个好方法吗?据我所知,我假设您可以在程序集中添加自定义属性,并在运行时读取发布日期时间,如

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

e、 g.在执行Azure功能项目时,使用通配符的AssemblyInfo和AssemblyVersion不适用于Visual Studio 2017

显示构建时间将需要(通过HTTP触发器)向某些人显示deploy实际做了什么


由于它是一个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;
    }
}
[assembly: AssemblyPulishDateTime(636354478227030209)] //utc, 7/12/2017 9:17:02 AM
然后编辑
AssemblyInfo.cs
并添加
AssemblyPulishDateTime
和发布日期时间标记,如下所示:

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