如何在ASP.NET程序中顯示程序集版本號

字號:


    于很多有趣的原因,ASP.NET程序中雖然可以往App_code目錄中追加AssemblyInfo.cs文件,但位于該文件中的版本號總是無法正確的顯示在用戶面前。
    如果你通過下面的語句企圖像其他.NET應(yīng)用程序一樣獲取Assembly中的版本號的話,你將永遠(yuǎn)得到一個0.0.0.0的字符串。
    System.Reflection.Assembly.GetAssembly(this.GetTyp e()).GetName().Version.ToString();
    很多人能說出一堆理由來告訴我企圖在ASP.NET程序中獲取程序集版本號是多么愚蠢的一件事,我對此也非常的理解,并表示認(rèn)同,但如果得到變態(tài)的要求的話我們還是需要動手來實(shí)現(xiàn)這件事情的。
    首先在App_Code文件下下增加一個AssemblyInfo.cs文件,文件的內(nèi)容模板可以從其他.NET應(yīng)用程序中復(fù)制。
    其次,在Global.asax文件的Application_Start段落中增加如下代碼:
    Global.asax
    void Application_Start(object sender, EventArgs e)
    {
    // ...
    // Load Assembly
    Application.Add("Assembly", System.Reflection.Assembly.Load("App_Code/AssemblyInfo.cs"));
    // ...
    }
    簡單來說就是直接指定Assembly文件,然后直接放到Application的緩存中。
    最后就是在代碼中獲取版本號,既然知道是怎么存進(jìn)去的,取出來就簡單了:
    VersionNumber.Text = ((System.Reflection.Assembly)Application["Assembly"]).GetName().Version.ToString();