在运行时期间获取预编译Azure Functions程序集的构建时间的最简单方法是什么?
e.g。使用通配符的AssemblyInfo的AssemblyInfo在执行Azure Functions项目时不能与Visual Studio 2017一起使用。
显示某些人(通过HTTP触发器)部署实际上已经完成了某些事情,需要显示构建时间。
由于它是Visual Studio 2017项目,因此可以通过.csproj修改将构建日期添加到程序集中,但这是一种很好的方法吗?
答案 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);
}