Co to są zestawy .NET?


Odpowiedzi:


169

Mówiąc prościej: fragment (prekompilowanego) kodu, który może być wykonany przez środowisko wykonawcze .NET. Program .NET składa się z jednego lub więcej zestawów.


30
@KimJongWoo - Nie, plik Jar to tylko plik zip zawierający skompilowane pliki kodu bajtowego. Zespół jest plikiem PE (Portable Executable format) (tj. DLL lub EXE), ale koncepcyjnie służą one do podobnych celów.
Erik Funkenbusch,

Więc to jest jak .classplik w świecie Java?
mljrg

245

Montaż jest najmniejszą jednostką wdrażania aplikacji .net. Może to być dll lub exe .
Istnieją głównie dwa typy:

  1. Prywatne zgromadzenie: dll lub exe, który jest wyłączną własnością tylko jednej aplikacji. Zazwyczaj jest przechowywany w folderze głównym aplikacji

  2. Zestaw publiczny / wspólny: jest to biblioteka dll, z której może korzystać wiele aplikacji jednocześnie. Wspólny zestaw jest przechowywany w GAC, tj. Global Assembly Cache .

Brzmi ciężko? Naa ....
GAC to po prostu folder C: \ Windows \ Assembly, w którym można znaleźć publiczne zestawy / pliki dll wszystkich programów zainstalowanych na komputerze.

Istnieje również trzeci i najmniej znany rodzaj zestawu: zespół satelitarny .
Zespół satelitarny zawiera tylko obiekty statyczne, takie jak obrazy i inne pliki niewykonywalne wymagane przez aplikację.

Mam nadzieję, że to pomoże czytelnikom!


3
Pamiętaj, że lokalizacja jest inna dla .NET 4.0: stackoverflow.com/questions/2660355/net-4-0-has-a-new-gac-why
TrueWill 28.09.2013

to może stać się wolne. po tym, jak folder otrzyma tysiące takich plików, system Windows działa wolniej, próbując przejść przez drzewo katalogów lub po prostu czytając katalog.
Jim Michaels

@mangeshkt - Czy można skopiować dll jednej aplikacji i umieścić ją w katalogu głównym innej, czy będę mógł korzystać z funkcji pierwszej?
Shivam657

57

Zespoły

Podczas kompilowania aplikacji utworzony kod MSIL jest przechowywany w zestawie. Zespoły zawierają zarówno pliki aplikacji, które można uruchamiać bezpośrednio z systemu Windows bez potrzeby korzystania z innych programów (te mają rozszerzenie pliku .exe), jak i biblioteki (z rozszerzeniem .dll) do użytku przez inne aplikacje.

Oprócz zawierających MSIL, zestawy zawierają również meta informacje (to znaczy informacje o informacjach zawartych w zestawie, znane również jako metadane) i opcjonalne zasoby (dodatkowe dane używane przez MSIL, takie jak pliki dźwiękowe i obrazy). Meta informacje umożliwiają zespołom pełne opisywanie się. Nie potrzebujesz żadnych innych informacji, aby użyć zestawu, co oznacza, że ​​unikniesz sytuacji takich, jak brak dodania wymaganych danych do rejestru systemu i tak dalej, co często stanowiło problem podczas programowania na innych platformach.

Oznacza to, że wdrażanie aplikacji jest często tak proste, jak kopiowanie plików do katalogu na komputerze zdalnym. Ponieważ w systemach docelowych nie są wymagane żadne dodatkowe informacje, możesz po prostu uruchomić plik wykonywalny z tego katalogu i (zakładając, że .NET CLR jest zainstalowany) jesteś gotowy.

Oczywiście niekoniecznie chcesz zawrzeć wszystko, co jest potrzebne do uruchomienia aplikacji w jednym miejscu. Możesz napisać kod, który wykonuje zadania wymagane przez wiele aplikacji. W takich sytuacjach często przydatne jest umieszczenie kodu wielokrotnego użytku w miejscu dostępnym dla wszystkich aplikacji. W .NET Framework jest to pamięć podręczna Global Assembly Cache (GAC). Umieszczanie kodu w GAC jest proste - wystarczy umieścić zestaw zawierający kod w katalogu zawierającym tę pamięć podręczną.


Dla większej przejrzystości „Podczas kompilowania aplikacji utworzony kod MSIL jest przechowywany w zestawie”. Aby dodać zawartość zestawu, możesz użyć ILSPY.
Sandeep

33

Zestaw to rzeczywisty plik .dll na dysku twardym, na którym przechowywane są klasy w .NET Framework. Na przykład wszystkie klasy zawarte w programie ASP.NET Framework znajdują się w zestawie o nazwie System.Web.dll.

Mówiąc dokładniej, zespół jest podstawową jednostką wdrażania, bezpieczeństwa i kontroli wersji w .NET Framework. Ponieważ zestaw może obejmować wiele plików, zespół jest często nazywany „logiczną” biblioteką DLL.

Uwaga

.NET Framework (wersja 2.0) zawiera 51 zestawów.

Istnieją dwa typy zespołów: prywatny i wspólny. Z prywatnego zestawu może korzystać tylko jedna aplikacja. Z drugiej strony wspólny zestaw może być używany przez wszystkie aplikacje znajdujące się na tym samym serwerze.

Udostępnione zespoły znajdują się w Global Assembly Cache (GAC). Na przykład zestaw System.Web.dll i wszystkie inne zestawy zawarte w .NET Framework znajdują się w globalnej pamięci podręcznej zestawów.

Uwaga

Globalna pamięć podręczna zestawów znajduje się fizycznie w folderze \ WINDOWS \ Assembly na komputerze. W folderze \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 znajduje się osobna kopia każdego zestawu. Pierwszy zestaw zestawów jest używany w czasie wykonywania, a drugi zestaw jest używany w czasie kompilacji.

Zanim będzie można użyć klasy zawartej w zestawie w aplikacji, należy dodać odwołanie do zestawu. Domyślnie aplikacja ASP.NET odwołuje się do najpopularniejszych zestawów zawartych w globalnej pamięci podręcznej zestawów:

mscorlib.dll

System.dll

System.Configuration.dll

System.Web.dll

System.Data.dll

System.Web.Services.dll

System.Xml.dll

System.Drawing.dll

System.EnterpriseServices.dll

System.Web.Mobile.dll

Aby użyć dowolnej konkretnej klasy w .NET Framework, musisz zrobić dwie rzeczy. Po pierwsze, aplikacja musi odwoływać się do zestawu zawierającego klasę. Po drugie, aplikacja musi zaimportować przestrzeń nazw powiązaną z klasą.

W większości przypadków nie musisz się martwić o odwołanie do niezbędnego zestawu, ponieważ do najpopularniejszych zestawów odwołuje się automatycznie. Jeśli jednak potrzebujesz użyć specjalistycznego zestawu, musisz jawnie dodać odwołanie do zestawu. Na przykład, jeśli chcesz wchodzić w interakcje z usługą Active Directory za pomocą klas w przestrzeni nazw System.DirectoryServices, musisz dodać odwołanie do zestawu System.DirectoryServices.dll do aplikacji.

Każda pozycja klasy w dokumentacji zestawu .NET Framework SDK zawiera listę zestawu i przestrzeni nazw powiązanej z klasą. Jeśli na przykład przejrzysz klasę MessageQueue w dokumentacji, odkryjesz, że ta klasa znajduje się w obszarze nazw System.Messaging znajdującym się w zestawie System.Messaging.dll.

Jeśli używasz Visual Web Developer, możesz jawnie dodać odwołanie do zestawu, wybierając opcję menu Witryna, Dodaj odwołanie i wybierając nazwę zestawu, do którego chcesz się odwoływać. Na przykład dodanie odwołania do zestawu System.Messaging.dll powoduje dodanie pliku konfiguracyjnego sieci z Listingu 1.4 do Twojej aplikacji.

Na przykład. Web.Config

enter code here

Jeśli nie chcesz używać programu Visual Web Developer, możesz dodać odwołanie do zestawu System.Messaging.dll, ręcznie tworząc plik w powyższym przykładzie


1
Znacznie bardziej technicznie niż zaakceptowana odpowiedź, powinna to być odpowiedź zaakceptowana.
sparkyShorts

8

Wikipedia musi powiedzieć:

W środowisku Microsoft .NET zestaw jest częściowo skompilowaną biblioteką kodów do użycia we wdrożeniu, wersjonowaniu i zabezpieczeniach. Istnieją dwa typy: zestawy procesów (EXE) i zestawy bibliotek (DLL). Zestaw procesów reprezentuje proces, który będzie korzystał z klas zdefiniowanych w zestawach bibliotek. Zespoły .NET zawierają kod w CIL, który jest zwykle generowany z języka CLI, a następnie kompilowany do języka maszynowego w czasie wykonywania przez kompilator just-in-time CLR. Zespół może składać się z jednego lub więcej plików. Pliki kodu nazywane są modułami. Zestaw może zawierać więcej niż jeden moduł kodu, a ponieważ do tworzenia modułów kodu można używać różnych języków, technicznie możliwe jest użycie kilku różnych języków do utworzenia zestawu.

Jeśli naprawdę przeglądałeś, pomogłoby ci wyjaśnienie tego, czego nie rozumiesz


7

Zobacz to :

W środowisku Microsoft .NET zestaw jest częściowo skompilowaną biblioteką kodów do użycia podczas wdrażania, wersjonowania i bezpieczeństwa


7

fizyczny zbiór klasy, interfejsu, wyliczenia itp., który znajduje się w kodzie IL. Który może być plikiem .EXE lub .DLL .EXE jest plikiem wykonywalnym, a .DLL może być dynamicznie używany w dowolnym języku obsługiwanym przez .net.


6

Zespół jest jednostką wykonawczą składającą się z typów i innych zasobów. Wszystkie typy w zestawie mają ten sam numer wersji.

Często jeden zestaw ma tylko jedną przestrzeń nazw i jest używany przez jeden program. Ale może obejmować kilka przestrzeni nazw. Ponadto jedna przestrzeń nazw może rozciągać się na kilka zestawów. W dużych projektach zespół może składać się z wielu plików, które są trzymane razem przez manifest (tj. Spis treści).

W języku C # zestaw jest najmniejszym wdrożeniem aplikacji .Net. Może to być dll lub exe. Ma dwa typy: 1. Zgromadzenie prywatne 2. Zgromadzenie publiczne / wspólne


6

Oprócz zaakceptowanej odpowiedzi, chcę dać ci przykład!

Na przykład wszyscy używamy

System.Console.WriteLine()

Ale gdzie jest kod dla System.Console.WriteLine !?
jaki kod faktycznie umieszcza tekst na konsoli?

Jeśli spojrzysz na pierwszą stronę dokumentacji dla klasy Console , zobaczysz w pobliżu u góry następujące elementy: Zestaw: mscorlib (w mscorlib.dll) Wskazuje, że kod dla klasy Console znajduje się w asemblerze o nazwie mscorlib. Zestaw może składać się z wielu plików, ale w tym przypadku jest to tylko jeden plik, którym jest dynamiczna biblioteka linków mscorlib.dll.

Plik mscorlib.dll jest bardzo ważny w .NET, jest to główna biblioteka DLL dla bibliotek klas w .NET i zawiera wszystkie podstawowe klasy i struktury .NET.

jeśli znasz C lub C ++, ogólnie potrzebujesz na górze dyrektywy #include, która odwołuje się do pliku nagłówka. Plik dołączania zapewnia prototypy funkcji kompilatorowi. dla kontrastu Kompilator C # nie potrzebuje plików nagłówkowych. Podczas kompilacji kompilator C # uzyskuje bezpośredni dostęp do pliku mscorlib.dll i uzyskuje informacje z metadanych w tym pliku dotyczące wszystkich klas i innych typów w nim zdefiniowanych.

Kompilator w języku C # jest w stanie ustalić, że mscorlib.dll rzeczywiście zawiera klasę o nazwie Console w przestrzeni nazw o nazwie System za pomocą metody o nazwie WriteLine, która akceptuje pojedynczy argument typu string.

Kompilator C # może ustalić, że wywołanie WriteLine jest prawidłowe, a kompilator ustanawia odwołanie do zestawu mscorlib w pliku wykonywalnym.

domyślnie Kompilator C # będzie uzyskiwał dostęp do mscorlib.dll, ale w przypadku innych bibliotek DLL musisz poinformować kompilator o zespole, w którym znajdują się klasy. Są to tak zwane odniesienia.

Mam nadzieję, że teraz jest jasne!

Od DotNetBookZero Charles pitzold


5

MSDN ma dobre wytłumaczenie :

Zespoły są elementami składowymi aplikacji .NET Framework; stanowią one podstawową jednostkę wdrażania, kontroli wersji, ponownego użycia, zakresu aktywacji i uprawnień bezpieczeństwa. Zespół to zbiór typów i zasobów, które zostały zbudowane do współpracy i tworzą logiczną jednostkę funkcjonalności. Zespół zapewnia środowisku wykonawczemu języka wspólnego informacje potrzebne do rozpoznania implementacji typu. W środowisku wykonawczym typ nie istnieje poza kontekstem zestawu.


4

Zespół to zbiór typów i zasobów, który tworzy logiczną jednostkę funkcjonalności. Wszystkie typy w .NET Framework muszą istnieć w złożeniach; środowisko uruchomieniowe wspólnego języka nie obsługuje typów poza zespołami. Za każdym razem, gdy tworzysz aplikację Microsoft Windows®, usługę Windows, bibliotekę klas lub inną aplikację za pomocą Visual Basic .NET, budujesz pojedynczy zespół. Każdy zestaw jest przechowywany jako plik .exe lub .dll.

Źródło: https://msdn.microsoft.com/en-us/library/ms973231.aspx#assenamesp_topic4

Dla osób z doświadczeniem Java, takich jak ja, mam nadzieję, że poniższy schemat wyjaśnia pojęcia -

Zespoły są jak pliki jar (zawierające wiele plików .class). Twój kod może odwoływać się do istniejącego zestawu lub sam kod może zostać opublikowany jako zestaw, do którego można odwoływać się i używać innego kodu (możesz to traktować jako pliki jar w Javie, które możesz dodać w zależnościach projektu).

Na koniec dnia zestaw jest skompilowanym kodem, który można uruchomić w dowolnym systemie operacyjnym z zainstalowanym CLR. Jest to to samo, co powiedzenie, że plik .class lub dołączony słoik może działać na dowolnej maszynie z zainstalowaną maszyną JVM.

wprowadź opis zdjęcia tutaj


2

W .Net zestawem może być:

Zbiór różnych opanowania części zawierających Types (or Classes), Resources (Bitmaps/Images/Strings/Files), Namespaces, Config Fileszestawiane Privatelylub Publicly; rozmieszczone w folderze locallub Shared (GAC); discover-ableprzez inne programs/assembliesi; może być w wersji.


2

Assemble to najmniejsza jednostka bezpieczeństwa wersji, wdrażania i ponownego użycia kodu w Microsoft.Net.

Zawiera:

- Assembly Identity
- Manifest
- Metadata
- MSIL Code
- Security Information
- Assembly Header

1

Montaż jest podstawową częścią programowania w .NET Framework. Zawiera kod wykonywany przez CLR Kod MSIL (Microsoft Intermediate Language) w przenośnym pliku wykonywalnym nie zostanie wykonany, jeśli nie ma skojarzonego manifestu zestawu.


1

Aplikacje .NET są tworzone przez łączenie dowolnej liczby zestawów. Mówiąc najprościej, zestaw jest niczym więcej niż wersjonowanym, samoopisującym się plikiem binarnym (DLL lub EXE) zawierającym pewną kolekcję typów (klas, interfejsów, struktur itp.) I opcjonalne zasoby (obrazy, tabele ciągów i tak dalej). Jedną z rzeczy, o których należy teraz boleśnie wiedzieć, jest to, że wewnętrzna organizacja zestawu .NET nie przypomina wewnętrznej organizacji klasycznego serwera COM (niezależnie od udostępnionych rozszerzeń plików).


1

W .NET, kiedy kompilujemy nasz kod źródłowy, asembler jest generowany w Visual Studio. Zestaw składa się z dwóch części Manifest i IL (Intermediate Language). Manifest zawiera metadane zestawu, oznacza wymagania wersji zestawu, tożsamość zabezpieczeń, nazwy i skróty wszystkich plików tworzących zestaw. IL zawiera informacje o klasach, konstruktorach, głównej metodzie itp.



1

Rozwiązania Visual Studio składają się z jednego lub więcej projektów. Na przykład: projekty konsoli mogą tworzyć zespół . Zespół jest logicznie fragmentem kodu, który może zostać wysłany do klientów, a fizycznie plik .EXE (program wykonywalny) lub .DLL (mogą być ponownie wykorzystywane przez inne programy).


0

Zespoły zawierają informacje o zawartości, wersjonowaniu i zależnościach, aplikacje, które ich używają, nie muszą polegać na źródłach zewnętrznych, takich jak rejestr w systemach Windows, aby działać poprawnie. Zespoły redukują konflikty .dll i sprawiają, że aplikacje są bardziej niezawodne i łatwiejsze do wdrożenia.

Jest to zbiór typów i zasobów, które zostały zbudowane do współpracy i tworzą logiczną jednostkę funkcjonalności. Zespoły mają postać plików wykonywalnych (.exe) lub dynamicznej biblioteki linków (.dll) i są elementami składowymi aplikacji .NET. Zapewniają one w środowisku wykonawczym wspólnego języka informacje, których potrzebuje, aby wiedzieć o implementacjach typów.

Każdy zestaw ma plik manifestu zestawu. Podobnie jak spis treści manifest manifestu zawiera:

  • Tożsamość zestawu (jego nazwa i wersja).
  • Tabela plików opisująca wszystkie inne pliki tworzące zespół, takie jak inne utworzone przez ciebie zespoły, na których opiera się plik .exe lub .dll, pliki bitmapowe lub pliki Readme.
  • Lista odniesień do zestawu, która jest listą wszystkich zewnętrznych zależności, takich jak .dll lub inne pliki. Odwołania do zestawu zawierają odwołania do obiektów globalnych i prywatnych. W .NET Framework obiekty globalne znajdują się w globalnej pamięci podręcznej zestawu (GAC). System.IO.dll jest przykładem zestawu w GAC. Obiekty prywatne muszą znajdować się na poziomie katalogu w katalogu lub poniżej katalogu, w którym zainstalowana jest Twoja aplikacja.

Aby użyć zespołu w aplikacji, musisz dodać do niego odwołanie. Po odwołaniu do zestawu wszystkie dostępne typy, właściwości, metody i inne elementy przestrzeni nazw są dostępne dla aplikacji, tak jakby ich kod był częścią pliku źródłowego.

Wszyscy wiemy, że nasz kod źródłowy jest konwertowany na język Microsoft Intermediate Language (MSIL). W czasie wykonywania CLR (Common Languge Runtime) konwertuje MSIL na kod macierzysty za pomocą kompilatora JIT. Przed konwersją kodu MSIL należy przejść proces weryfikacji, który bada MSIL + MetaData (nazwa zestawu, wersja, referencje): aby dowiedzieć się, czy można określić, czy kod jest bezpieczny dla typu. jeśli przejdzie weryfikację, MSIL zostanie przekonwertowany na kod macierzysty. Wszystkie wywoływane metody są konwertowane na język maszynowy i zapisywane w pamięci podręcznej do późniejszego użycia.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.