Cum instalezi assembly-uri în GAC? Cum le folosești în pagini web?

De ce în GAC – Global Assembly Cache?

Ca o definiție simplă, un assembly este o colecție de clase sau controale Web, compilate într-un fișier DLL. Deci un assembly e un DLL. De exemplu, suita de controale Ajax Toolkit de la Microsoft este încapsulată în AjaxControltoolkit.dll – iote aici exemple de utilizare a controalelor.

Ca să folosești assembly-uri într-o aplicație Web, plasezi DLL-ul în directorul /bin din rădăcina aplicației. Dar cum faci dacă vrei ca acea colecție din assembly să fie disponibilă server-wide, adică pentru toate site-urile sau aplicațiile Web de pe acel server? Ei bine, la asta servește Global Assembly Cache.

Pe Windows 7 sau Windows Server 2008, am văzut că locația GAC este C:\Windows\Assembly\. Arăt imediat și cum instalezi un DLL acolo – nu am încercat cu drag-and-drop.

Notă: Pe un sistem, un DLL din GAC poate avea mai multe versiuni. Pentru ca un DLL să fie instalabil în GAC, are nevoie de informații de versionare, strong name și alte chestii exotice. Iote aici cum pregătești și compilezi un DLL ca să fie instalabil în GAC.

Cum instalezi în Global Assembly Cache

Pentru a instala un assembly în GAC, se folosește mica aplicație GACUTIL.EXE. Și pentru că se fac modificări la nivel de sistem, ai nevoie de drepturi de administrator pe acea mașină, nu?

GacUtil.exe nu este disponibilă implicit pe sistem. Dar vine cu SDK-ul de .NET Framework sau odată cu instalarea Visual Studio. De exemplu, eu am găsit-o la C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\, după ce mi-am instalat versiunea gratuită Visual Studio Web Developer Express Edition.

Io am pornit SDK Command Prompt din meniul de start – cu click-dreapta și Run as administrator. Apoi am băgat comanda de instalare:

gacutil.exe –i "D:\Calea catre fisier\AjaxControlToolkit.dll"

Cum folosești controalele dintr-un assembly în pagina Web

În primul rând, trebuie să afli versiunea assembly-ului și cheia. Asta e relativ simplu: te duci în directorul GAC – C:\Windows\Assembly\ – dai click-dreapta pe DLL și alegi Properties.

Apoi, în pagina ASPX unde vrei să folosești controalele, adaugi directiva de referențiere:

<%@ Register TagPrefix="AjaxControlToolkit" Namespace="AjaxControlToolkit"
    Assembly="AjaxControlToolkit, Version=3.0.30512.17815, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e" %>

Sau, dacă ai de gând să folosești controalele în multe alte pagini din aplicația Web, adaugi direct în fișierul de configurare a aplicației, Web.config, din rădăcină:

<configuration>
  <system.web>
    <pages>
      <controls>
        <add tagPrefix="AjaxControlToolkit" namespace="AjaxControlToolkit"
          assembly="AjaxControlToolkit, Version=3.0.30512.17815, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e" />
      </controls>
    </pages>
  </system.web>
</configuration>

Iar d-aici, pur și simplu bagi controlul în codul paginii ASPX. Nu uita că trebuie inclus și Script Manager, ca pagina să descarce codul JavaScript necesar pentru Ajax; ăsta trebuie băgat înăuntrul unui tag <form runat="server">. Și-ar trebui să meargă:

<body>
  <form runat="server">
    <asp:ScriptManager runat="server"></asp:ScriptManager>
    <h1>Hello World</h1>
    <AjaxControlToolkit:ConfirmButtonExtender ID="ajaxConfirm" runat="server"
        TargetControlID="btnTest" ConfirmText="Are you sure you want to click this?" />
    <asp:Button ID="btnTest" runat="server" Text="TEST THIS" />
  </form>
</body>

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s