在运行时获取预编译 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);
}
在运行时获取预编译 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);
}