<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      注冊(cè)使用GAC—Global Assembly Cache(.NET)

      本文將一些資料進(jìn)行整理,后面附帶Demo。

       

      1、什么是GAC?GAC解決什么問(wèn)題? 

      GAC全稱為: Global Assembly Cach(全局程序集緩存),你可以在你的電腦的系統(tǒng)盤(pán)如:C:\Windows\assembly\看到目前計(jì)算機(jī)上安裝的GAC。


      GAC的作用是可以存儲(chǔ)一些有多個(gè)應(yīng)用都要用到的公共的Assembly(程序集),例如System.Data、System.Windows.Forms等。這樣,多個(gè)應(yīng)用就可以從GAC中取得 Assembly,而不需要在所有應(yīng)用中把要用到的Assembly都拷貝到應(yīng)用程序的相關(guān)目錄下面(比如:Windows應(yīng)用程序的Debug目錄,ASP.NET的bin目錄)。

       

      舉一個(gè)最簡(jiǎn)單的例子,很多初學(xué).NET的開(kāi)發(fā)人員進(jìn)行數(shù)據(jù)訪問(wèn)都是從SqlHelper.cs開(kāi)始的,SqlHelper是一個(gè)數(shù)據(jù)訪問(wèn)對(duì)象,提供對(duì)數(shù)據(jù)庫(kù)操作的各種方法,名字大概是學(xué)從PetShop吧,樣子大概是這個(gè)樣子, 又或是這個(gè)樣子,且不管長(zhǎng)啥樣,如果部署在服務(wù)器上的多個(gè)應(yīng)用都使用此對(duì)象,那么基本上會(huì)有下面幾種類似的處理方法:

      (1)將此類直接拷貝到項(xiàng)目中使用;

      (2)建一個(gè)類庫(kù)項(xiàng)目,包含此類,然后編譯為dll,再在應(yīng)用中添加引用以使用此程序集中的SqlHelper;

      (3)將(2)中的dll注冊(cè)為GAC,直接在應(yīng)用中使用,就像使用System.IO、System.Net一樣 ;

       

      當(dāng)SqlHelper.cs更新后,對(duì)于(1)和(2)你可能會(huì)感覺(jué)到非常痛苦,因?yàn)橐饌€(gè)應(yīng)用去替換,而對(duì)于(3)則簡(jiǎn)單多了,只需要將編譯后的dll重新注冊(cè)到GAC就可以了。

       

      記得在MSDN曾經(jīng)看到過(guò)一句話,說(shuō)是“.NET程序集解決了DLL Hell”的問(wèn)題。

       

      說(shuō)這里,先說(shuō)個(gè)故事:有一天,一個(gè)朋友的同事問(wèn)我,“寫(xiě)過(guò)動(dòng)態(tài)鏈接庫(kù)嗎?”, 我一時(shí)竟然沒(méi)想起是什么,平常說(shuō)dll太多了,幾乎都忘記“動(dòng)態(tài)鏈接庫(kù)”這幾個(gè)字了,不過(guò)還好,腦子里還有抹不去的記憶。

       

      “.NET程序集解決了DLL Hell”關(guān)鍵一點(diǎn)就是相同名稱而不同版本的程序集可以共存,打開(kāi)Assembly所在目錄,如:C:\Windows\assembly,看一下就比較清楚了。

       

      可以思考一下,為什么同一系統(tǒng)中可以安裝多個(gè)版本的.NET Framework、Visual Studio;而有些軟件是不行的,只能存在唯一版本,大概就是這個(gè)道理。 

       

      2、將DLL注冊(cè)到GAC 

      (1)創(chuàng)建DLL:新建一個(gè)類庫(kù)項(xiàng)目,名稱為GACDemo,再添加一個(gè)類,如:

      using System.Text;

      namespace GACDemo
      {
          
      public class Function
          {
              
      //計(jì)算字符串長(zhǎng)度,中文及全角算1,其它算0.5
              public static int GetStringLength(string text)
              {
                  
      int Len = 0;
                  
      //記錄非中文、非全角字符為0.5個(gè)長(zhǎng)度
                  float charLen = 0;
                  
      char[] chars = text.ToCharArray();
                  
      for (int i = 0; i < chars.Length; i++)
                  {

                      
      int charLength = Encoding.UTF8.GetByteCount(chars[i].ToString());
                      
      if (charLength == 3)
                      {
                          Len
      ++;
                      }
                      
      else
                      {
                          
      if (charLen == 0.5)
                          {
                              charLen 
      = 0;
                          }
                          
      else
                          {
                              charLen 
      = 0.5f;
                              Len
      ++;
                          }
                      }
                  }
                  
      return Len;
              }
          }
      }

       

      右擊項(xiàng)目,有菜單中選擇屬性,按如下操作生成強(qiáng)命名Key (GAC中的Assembly必須是strong-name的 )

       

       然后編譯,之前我注冊(cè)過(guò)一次,版本為1.0.0.0,編譯之前,我將版本修改為了2.0.0.0。

      (2)注冊(cè)

      以管理員身份運(yùn)行命令行

       

      進(jìn)入到類庫(kù)項(xiàng)目的bin/debug目錄,執(zhí)行g(shù)acutil -if gacdemo.dll

       

      查看 C:\Windows\assembly

       

      兩個(gè)版本并存。 

      3、在ASP.NET中使用GAC 

      這個(gè)就簡(jiǎn)單了,新建一個(gè)ASP.NET網(wǎng)站,添加引用,寫(xiě)如下測(cè)試代碼

      using System;
      using GACDemo;

      namespace gacwebdemo
      {
          
      public partial class _Default : System.Web.UI.Page
          {
              
      protected void Page_Load(object sender, EventArgs e)
              {
                  Response.Write(Function.GetStringLength(
      "hello"));
              }
          }
      }

       

      編譯網(wǎng)站。

      在IIS中發(fā)布網(wǎng)站:

      VS2008直接右擊項(xiàng)目發(fā)布網(wǎng)站。

      VS2010右擊網(wǎng)站點(diǎn)擊發(fā)布,選擇文件系統(tǒng)。

       

      發(fā)布后的文件目錄:

       

       

       

      然后在IIS中發(fā)布網(wǎng)站(這里是IIS7):

       

       

       

      然后瀏覽default.aspx,看到輸出的結(jié)果是3。

       

      其它參考資料:

       

      在 GAC 中安裝程序集

      如何在 GAC 中安裝程序集 

      Global Assembly Cache 

      如何在 Visual C# .NET 中將程序集安裝到全局程序集緩存中  

      posted on 2010-12-17 11:09  Ferry  閱讀(17081)  評(píng)論(3)    收藏  舉報(bào)

      導(dǎo)航

      主站蜘蛛池模板: 国产女人18毛片水真多1| 中文字幕精品亚洲字幕成| 天干天干夜天干天天爽| 国产成人啪精品午夜网站| 双流县| 99国产精品白浆无码流出| 国产L精品国产亚洲区在线观看 | 日本道精品一区二区三区| 久久国产乱子精品免费女| 热久久这里只有精品99| 亚洲国产日韩在线视频| 国产99视频精品免费视频6| 亚洲男人天堂一级黄色片| 99亚洲男女激情在线观看| 亚洲欧美日韩精品色xxx| 国产亚洲精品aaaa片app| 美腿丝袜亚洲综合在线视频| 亚洲成人av在线资源| 亚洲av永久无码精品成人| 老太脱裤子让老头玩xxxxx| 日韩av一区二区三区不卡| 国产综合一区二区三区麻豆| 亚洲天堂激情av在线| 欧美日韩不卡合集视频| 欧美成人精品手机在线| 精品人妻av综合一区二区 | 麻豆av一区二区天美传媒| 国产av一区二区久久蜜臀| 国产成人黄色自拍小视频| 久久99久国产精品66| 亚洲中文久久久精品无码| 国产综合久久久久鬼色| 国产在线观看码高清视频| 免费一区二区无码东京热| 日本激情久久精品人妻热| 国产av亚洲精品ai换脸电影| 狠狠噜天天噜日日噜视频麻豆| 日本毛茸茸的丰满熟妇| 亚洲综合无码一区二区三区不卡| 中文字幕国产精品资源| 久久久天堂国产精品女人|