2017-07-11 10 views
0

在運行時期間獲取預編譯Azure函數程序集構建時間的最簡單方法是什麼?在運行期間獲取預編譯Azure函數程序集的構建時間

例如使用通配符的AssemblyVersion的AssemblyInfo在執行Azure函數項目時不適用於Visual Studio 2017。

顯示構建時間將需要顯示某些人(通過HTTP觸發器)部署實際上已經做了些什麼。

由於它是一個Visual Studio 2017項目,生成日期可以通過.csproj修改添加到程序集中,但是這是做到這一點的好方法嗎?

回答

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