2012-05-04 32 views
1

在Azure Web角色中,我想在構建程序集時檢索日期/時間。我見過retrieving the linker timestamp from the PE header這樣做的一些技巧,但這需要您閱讀Assembly.Location,這似乎不適用於Azure項目。我得到這個異常:以Azure Web角色獲取程序集構建日期

NotSupportedException異常 - 不支持在動態程序所調用的成員

也許有得到這個信息的更好的方法。也許我可以在部署Web角色時獲取日期/時間?這對我也很有用。

感謝您的任何幫助。

回答

0

你在問兩個不同的東西。代碼編譯/構建的時間很有可能與部署角色的時間大不相同。因此,您可能會得到相同的日期/時間,可能不會,除非您控制構建和部署同一時間,否則無法保證。

如果您的目標是要知道何時部署角色,您可以將此日期/時間添加到多個位置,並直接在角色特定的代碼中檢索它。我不確定是否有辦法從角色獲取部署時間,並且稍後會深入觀察。

這裏有一些建議自帶立即在我的腦海裏:

  1. 創建一個「字符串」,在您的服務配置設置,並在您角色的特定代碼讀取它。請記住,無法直接在Web角色特定的W3WP.exe進程中獲取服務配置設置,因爲這兩個進程是分開運行的,並且需要一些額外的編碼。

  2. 您還可以添加日期/時間到服務配置和訪問無論是在啓動任務,進一步如下處理: http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/09/how-to-access-service-configuration-settings-in-windows-azure-startup-task.aspx

  3. 您可以在App.Config中和訪問它添加日期/時間設置。我在這裏描述: http://blogs.msdn.com/b/avkashchauhan/archive/2011/10/25/reading-configuration-entries-using-system-configuration-configurationmanager-class-in-a-windows-azure-application.aspx

+0

我認爲這是最好的答案,因爲它回答了「其他做法」的問題之一。之所以沒有在我的情況下工作,是因爲我試圖得到一個Web程序集的位置,這在這個環境中不起作用。如果我檢查一個單獨的「類庫」項目的程序集,它將起作用。 –

0

在您鏈接到該解決方案,而不是做這樣的:

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); 

試着這樣做:

System.Reflection.Assembly assembly = typeof(AClassInMyAssembly).Assembly; 

我不知道將工作,但我認爲它可能。如果沒有,你可能會考慮大會版本是否適合你的目的。