2009-09-01 10 views
46

Czy możesz wytłumaczyć, co to jest Zgromadzenie w C# lub .NET?Czym dokładnie jest Zgromadzenie w C# lub .NET?

  1. Gdzie się zaczyna i gdzie się kończy?
  2. Jakie ważne informacje powinienem wiedzieć o Zgromadzeniach?
+2

Ściśle mówiąc, czy nie jest to koncepcja a .NET, a nie koncepcja C#? – JeffH

+2

@JeffH: kiedy zadałem pytanie, myślałem, że to koncepcja C#. Teraz rozumiem, że jest to .NET. Niemniej jednak, ponieważ myślę, że inni ludzie mogą być zdezorientowani, tak jak ja, celowo nie zmieniłem go dla Google, aby uwzględnić ten błąd ... –

+0

"exe" lub "dll" –

Odpowiedz

65

Zestaw jest skompilowanym wyjściem Twojego kodu, zazwyczaj DLL, ale twój EXE jest także zbiorem. Jest to najmniejsza jednostka wdrożenia dla dowolnego projektu .NET.

Zespół zazwyczaj zawiera kod .NET w MSIL (język Microsoft Intermediate), który zostanie skompilowany do kodu natywnego ("JITted" - kompilowany przez kompilator Just-In-Time) przy pierwszym uruchomieniu na danym komputerze . Ten skompilowany kod będzie również przechowywany w zespole i ponownie wykorzystywany podczas kolejnych wywołań.

Zespół może również zawierać zasoby, takie jak ikony, mapy bitowe, tabele strun i tym podobne. Ponadto zestaw zawiera również metadane w manifeście złożenia - informacje takie jak numer wersji, silna nazwa, kultura, odnośne zespoły i tak dalej.

W 99% przypadków jeden zestaw równa się fizycznemu plikowi na dysku - przypadek złożony z wielu plików (jeden zespół, podzielony na więcej niż jeden plik) wydaje się być dość dziwnym przypadkiem krawędzi kuli których nigdy nie spotkałem do tej pory w moim 5+ lat rozwoju .NET.

W zespole wielopłytkowym nadal będzie tylko jeden manifest zespołu w DLL lub EXE i kod MSIL w wielu plikach sieciowych.

+1

@marc_s: Myślę, że masz na myśli wiele plik montażowy. Możliwe jest pakowanie wielu zestawów w jednym pliku za pośrednictwem narzędzi wiersza polecenia studia, ale nie bezpośrednio za pośrednictwem IDE. –

+4

Bardzo ważną rzeczą w zespole są metadane w manifeście złożenia. Plik manifestu zawiera informacje takie jak wersja, silna nazwa, kultura, odwołania do złożeń itp. W zespole wieloplikowym nadal istnieje tylko jeden manifest zespołu w bibliotece DLL lub exe, a kod MSIL w wielu plikach .netmodule. Zasadniczo zestaw jest minimalną jednostką wdrażania w> sieci – softveda

+0

@marc_s: Byłbym wdzięczny, gdyby dodać punkt @ Pratik do odpowiedzi, dzięki –

8

.NET assembly

W ramach Microsoft .NET, zespół jest częściowo skompilowany kod biblioteki do użytku w rozmieszczania, wersjonowanie i bezpieczeństwa.

4

http://www.codeguru.com/columns/csharp_learning/article.php/c5845

Zespół jest plikiem, który jest generowany automatycznie przez kompilator po udanej kompilacji każdej aplikacji .NET. Może to być biblioteka dołączana dynamicznie lub plik wykonywalny. Jest generowany tylko raz dla aplikacji i przy każdej kolejnej kompilacji zespół jest aktualizowany.

+1

Złożenia różnią się od plików, które je zawierają. –

+1

@Raghav - Zaktualizuj swoje zdjęcie czymś zwykłym na litość boską! Nie mówimy tu o paszportach! –

2

Here's inny wyjaśnienie make up .NET zgromadzeń, mini-cytuję:

.NET Framework składa się z koncepcji modułów, zespołów, które zarówno metadane sklep i oczywiste informacyjnych . Zespół może zawierać wiele modułów. Visual C# tylko kiedykolwiek tworzy jeden moduł, który jest włączony do złożenia przez kompilatora C# (csc.exe), ale zespół może połączyć wiele .NET modułów ze sobą za pośrednictwem linii poleceń łącznik (al.exe) montażowej narzędzie. Na przykład każdy ze źródłowych plików .cs kodu źródłowego może zostać skompilowany do modułu i połączony ze sobą w celu utworzenia zespołu - zespół to tylko zbiór modułów i zasobów. Jeden z tych modułów musi jednak zawierać jawne metadane (patrz poniżej) informacje dla zespołu, który ma być rozumiany przez CLR.
....
Po utworzeniu nowego pliku .exe lub .dll w programie VS.NET plik zostanie wyświetlony wewnątrz folderu bin pod numerem . Otwierając go w notatnika da się bełkot, albo nawet wewnątrz szesnastkowym edytorze nie znając strukturę pliku , trzeba mieć narzędzie jak ildasm.exe lub CFF Explorer, aby sens z go. Konstrukcja zespołu jest następująco:

nagłówka PE
nagłówek CLR
CLR metadanych
CLR
IL kod
danych natywne

0

Kiedy kod źródłowy jest zestawiane przez język kompilator generuje Zarządzany zespół i MSIL (MisroSoft Intermediate Language). To Zgromadzenie zawiera plik .dll lub .exe. Assebmly może być dwojakiego rodzaju: Zespół prywatny i Wspólny zespół, udostępniony Zespół jest przechowywany w GAC (Global Assembly Cache), dzięki czemu każda aplikacja może się do niego odwołać, podczas gdy zespół prywatny jest przechowywany w folderze aplikacji, z którego można korzystać tylko przez jedną aplikację.

0

Zespół to DLL lub EXE, które zostaną utworzone podczas publikowania lub kompilowania aplikacji.