close

用 ASP.NET 製作的專案, 在專案版本及相關工具多次更新後, 往往會因為更新的內容版本問題而產生困擾, 如果將 javascript腳本、image圖檔、css樣式檔 內嵌至 dll 檔, 在發行時一併發行, 這樣是不是就不容易出錯也相對便利很多呢? 作法如下, 提供您參考!!

 

Step1

在方案總管中找出要內嵌的 Javascript 腳本檔, 用滑鼠點選它後, 在屬性視窗中可以找到屬性 [建置動作], 將其值改為 [內嵌資源]。

Step2

在專案的 Properties(屬性) 節點下找到 AssemblyInfo.cs 檔, 逐一的把要內嵌的 Javascript 腳本檔以如下的設定方式加入AssemblyInfo.cs 檔中:

[assembly: System.Web.UI.WebResource("Namespace.Javascriptname1.js""text/js")]

[assembly: System.Web.UI.WebResource("Namespace.Javascriptname2.js""text/js")]

Step3

有使用 ScriptManager 者,  註冊 Javascript 腳本檔 需透過 Scriptmanager,透過 Page.ClientScript 註冊可能會導致檔案沒有加進 src 中。所以撰寫了一支公用的class,稱做RegisterJS.cs。

using System;   
using System.Collections.Generic;   
using System.Text;   
using System.Web;   
using System.Web.UI;   
    
namespace Joey {   
    public class RegisterJS {   
        /// <summary>   
        /// Registers the client script include.   
        /// 判斷當頁面有ScriptManager時,應透過ScriptManager註冊JS,   
        /// 使用Page.ClientScript註冊會在UpdatePanel Partial Render時遺漏參考。   
        /// </summary>   
        /// <param name="NowPage">The now page.</param>   
        /// <param name="JavascriptUniqueName">Name of the javascript unique.</param>   
        /// <param name="FileUrl">The file URL.</param>   
        public static void RegisterClientScriptInclude(object NowPage,string JavascriptUniqueName, string FileUrl) {   
            Page objPage = NowPage as Page;   
            if (objPage != null) {   
                ScriptManager sm = ScriptManager.GetCurrent(objPage);   
                if (sm == null)  
                    objPage.ClientScript.RegisterClientScriptInclude(JavascriptUniqueName, FileUrl);   
                else  
                    ScriptManager.RegisterClientScriptInclude(objPage, objPage.GetType(), JavascriptUniqueName, FileUrl);     
            }               
        }     
    }   
}
 

Step4

接著就是要把原本使用Page.ClientScript.RegisterClientScriptInclude的方式,改為透過RegisterJS來註冊。路徑的部分,改使用GetWebResourceUrl()來取得。

  1. string strJsLoc = Page.ClientScript.GetWebResourceUrl(this.GetType(), "Namespace.Javascriptname1.js");   
  2. RegisterJS.RegisterClientScriptInclude(this.Page, "Javascriptname1", strJsLoc);   

Step5

接著只需要建置專案,就會直接將方才設定的 Javascript 腳本檔 內嵌到 dll 檔。

 

參考自: https://dotblogs.com.tw/hatelove/archive/2009/01/09/6707.aspx

arrow
arrow

    morse 發表在 痞客邦 留言(0) 人氣()