2010-06-22 158 views
0

我有一個用C#編寫的Web應用程序,並且在IIS下作爲dll運行。如何從調用應用程序獲取版本信息

我也有一些共同的代碼編譯爲一個單獨的程序集(dll)。該通用代碼包含一個返回版本信息的函數(如下所示)。我如何修改此代碼,以便返回Web應用程序dll的版本信息,而不是當前的通用代碼dll?

... 
    private static Assembly _assy; 

    private static void CheckAssemblyInfoLoaded() 
    { 
     if (_assy == null) 
     { 
     _assy = Assembly.GetCallingAssembly(); 
     } 
    } 

    public static string Version 
    { 
     get { 
     CheckAssemblyInfoLoaded(); 
     Version v = _assy.GetName().Version; 
     return v.ToString(); 
     } 
    } 
... 

回答

1

使用Assembly.GetAssembly(Type type)方法,在這裏在該組件中定義的任何對象的類型通過,如Assembly.GetAssembly(typeof(MyClass));

+0

謝謝傑伊 - 我會給它一個旋轉。 – 2010-06-22 21:57:14

0

個人獲取組件參考,我會下降的靜態和方法結合成一。

public string GetVersion() 
    { 
     Assembly assy = Assembly.GetCallingAssembly(); 
     Version v = assy.GetName().Version; 
     return v.ToString(); 
    } 

靜態在這個scenerio可能會產生一些不需要的結果。我也改變了財產的方法;個人設計選擇。

您得到錯誤的程序集,因爲屬性get方法會跳過同一個程序集中的另一個方法,從而更改調用方。

+0

謝謝 - 但你的建議並沒有解決哪個程序集被引用來獲取信息的問題(Jay's)。 此外,我所示的代碼是一個靜態類的一部分,該類還返回其他版本/程序集信息,例如版權,描述,公司名稱等。 – 2010-06-22 22:25:35

相關問題