Zestawy w środowisku .NET
Zestawy tworzą podstawowe jednostki wdrażania, kontroli wersji, ponownego użycia, określania zakresu aktywacji i uprawnień zabezpieczeń dla programu . Aplikacje oparte na platformie NET. Zestaw to kolekcja typów i zasobów, które są tworzone w celu współpracy i tworzenia jednostki logicznej funkcjonalności. Zestawy mają postać plików wykonywalnych (.exe) lub biblioteki linków dynamicznych (.dll) i są blokami konstrukcyjnymi aplikacji .NET. Zapewniają one środowisko uruchomieniowe języka wspólnego informacje, które muszą być świadome implementacji typów.
Na platformie .NET i .NET Framework można utworzyć zestaw z co najmniej jednego pliku kodu źródłowego. W .NET Framework zestawy mogą zawierać co najmniej jeden moduł. Dzięki temu można zaplanować większe projekty, dzięki czemu kilku deweloperów może pracować nad oddzielnymi plikami lub modułami kodu źródłowego, które są łączone w celu utworzenia pojedynczego zestawu. Aby uzyskać więcej informacji na temat modułów, zobacz How to: Build a multifile assembly (Instrukcje: tworzenie zestawu wieloplikowego).
Zestawy mają następujące właściwości:
Zestawy są implementowane jako pliki.exe lub .dll .
W przypadku bibliotek przeznaczonych dla .NET Framework można udostępniać zestawy między aplikacjami, umieszczając je w globalnej pamięci podręcznej zestawów (GAC). Zanim będzie można je uwzględnić w pamięci GAC, musisz mieć silną nazwę zestawów. Aby uzyskać więcej informacji, zobacz Zestawy o silnych nazwach.
Zestawy są ładowane tylko do pamięci, jeśli są wymagane. Jeśli nie są używane, nie są ładowane. Oznacza to, że zestawy mogą być efektywnym sposobem zarządzania zasobami w większych projektach.
Można programowo uzyskać informacje o zestawie przy użyciu odbicia. Aby uzyskać więcej informacji, zobacz Odbicie (C#) lub Odbicie (Visual Basic).
Zestaw można załadować, aby go sprawdzić przy użyciu MetadataLoadContext klasy na platformie .NET i .NET Framework. MetadataLoadContextAssembly.ReflectionOnlyLoad zastępuje metody.
Zestawy w środowisku uruchomieniowym języka wspólnego
Zestawy zapewniają środowisko uruchomieniowe języka wspólnego z informacjami, które muszą być świadome implementacji typów. W środowisku uruchomieniowym typ nie istnieje poza kontekstem zestawu.
Zestaw definiuje następujące informacje:
Kod wykonywany przez środowisko uruchomieniowe języka wspólnego. Należy pamiętać, że każdy zestaw może mieć tylko jeden punkt wejścia:
DllMain
,WinMain
lubMain
.Granica zabezpieczeń. Zestaw to jednostka, w której są wymagane i przyznawane uprawnienia. Aby uzyskać więcej informacji na temat granic zabezpieczeń w zestawach, zobacz Zagadnienia dotyczące zabezpieczeń zestawów.
Wpisz granicę. Tożsamość każdego typu zawiera nazwę zestawu, w którym się znajduje. Typ o nazwie
MyType
ładowany w zakresie jednego zestawu nie jest taki sam jak typ o nazwieMyType
, który jest ładowany w zakresie innego zestawu.Granica zakresu odwołania. Manifest zestawu zawiera metadane używane do rozpoznawania typów i satysfakcjonujących żądań zasobów. Manifest określa typy i zasoby, które mają być widoczne poza zestawem, i wylicza inne zestawy, od których zależy. Kod języka microsoft intermediate language (MSIL) w przenośnym pliku wykonywalnym (PE) nie zostanie wykonany, chyba że ma skojarzony manifest zestawu.
Granica wersji. Zestaw jest najmniejszą jednostką do obsługi wersji w środowisku uruchomieniowym języka wspólnego. Wszystkie typy i zasoby w tym samym zestawie są wersjonowane jako jednostka. Manifest zestawu opisuje zależności wersji określone dla wszystkich zestawów zależnych. Aby uzyskać więcej informacji na temat przechowywania wersji, zobacz Przechowywanie wersji zestawów.
Jednostka wdrożenia. Po uruchomieniu aplikacji muszą znajdować się tylko zestawy, które początkowo wywołuje aplikacja. Inne zestawy, takie jak zestawy zawierające zasoby lokalizacji lub klasy narzędzi, można pobrać na żądanie. Dzięki temu aplikacje mogą być proste i elastyczne po pierwszym pobraniu. Aby uzyskać więcej informacji na temat wdrażania zestawów, zobacz Wdrażanie aplikacji.
Jednostka wykonywania równoległego. Aby uzyskać więcej informacji na temat uruchamiania wielu wersji zestawu, zobacz Zestawy i wykonywanie równoległe.
Tworzenie zestawu
Zestawy mogą być statyczne lub dynamiczne. Zestawy statyczne są przechowywane na dysku w plikach przenośnych wykonywalnych (PE). Zestawy statyczne mogą obejmować interfejsy, klasy i zasoby, takie jak mapy bitowe, pliki JPEG i inne pliki zasobów. Można również utworzyć zestawy dynamiczne, które są uruchamiane bezpośrednio z pamięci i nie są zapisywane na dysku przed wykonaniem. Zestawy dynamiczne można zapisywać na dysku po ich wykonaniu.
Istnieje kilka sposobów tworzenia zestawów. Możesz użyć narzędzi programistycznych, takich jak Visual Studio, które mogą tworzyć pliki.dll lub .exe. Za pomocą narzędzi w zestawie SDK Windows można tworzyć zestawy z modułami z innych środowisk deweloperskich. Interfejsy API środowiska uruchomieniowego języka wspólnego, takie jak System.Reflection.Emit, umożliwiają tworzenie zestawów dynamicznych.
Kompiluj zestawy, kompilując je w Visual Studio, kompilując je za pomocą narzędzi interfejsu wiersza polecenia platformy .NET Core lub tworząc zestawy .NET Framework za pomocą kompilatora wiersza polecenia. Aby uzyskać więcej informacji na temat kompilowania zestawów przy użyciu interfejsu wiersza polecenia platformy .NET, zobacz Omówienie interfejsu wiersza polecenia platformy .NET.
Uwaga
Aby skompilować zestaw w Visual Studio, w menu Kompilacja wybierz pozycję Kompiluj.
Manifest zestawu
Każdy zestaw ma plik manifestu zestawu . Podobnie jak w spisie treści, manifest zestawu zawiera:
Tożsamość zestawu (jego nazwa i wersja).
Tabela plików opisująca wszystkie inne pliki tworzące zestaw, takie jak inne utworzone zestawy, na których opiera się plik.exe lub .dll , pliki mapy bitowej lub pliki Readme.
Lista odwołań do zestawu, która jest listą wszystkich zależności zewnętrznych, takich jak .dlls lub innych plików. Odwołania do zestawów zawierają odwołania zarówno do obiektów globalnych, jak i prywatnych. Obiekty globalne są dostępne dla wszystkich innych aplikacji. Na platformie .NET Core obiekty globalne są powiązane z określonym środowiskiem uruchomieniowym platformy .NET Core. W .NET Framework obiekty globalne znajdują się w globalnej pamięci podręcznej zestawów (GAC). System.IO.dll jest przykładem zestawu w GAC. Obiekty prywatne muszą znajdować się na poziomie katalogu na poziomie lub poniżej katalogu, w którym zainstalowano aplikację.
Ponieważ zestawy zawierają informacje o zawartości, wersji 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ły prawidłowo. Zestawy zmniejszają konflikty.dll i ułatwiają wdrażanie aplikacji. W wielu przypadkach można zainstalować program . Aplikacja oparta na platformie NET po prostu kopiuje swoje pliki na komputer docelowy. Aby uzyskać więcej informacji, zobacz Manifest zestawu.
Dodawanie odwołania do zestawu
Aby użyć zestawu w aplikacji, należy dodać do niego odwołanie. Po odwołaniu się do zestawu wszystkie dostępne typy, właściwości, metody i inne elementy członkowskie jej przestrzeni nazw są dostępne dla aplikacji tak, jakby ich kod był częścią pliku źródłowego.
Uwaga
Większość zestawów z biblioteki klas platformy .NET jest przywołyana automatycznie. Jeśli zestaw systemowy nie jest automatycznie przywołyny, dodaj odwołanie w jeden z następujących sposobów:
- W przypadku platform .NET i .NET Core dodaj odwołanie do pakietu NuGet zawierającego zestaw. Użyj NuGet Menedżer pakietów w Visual Studio lub dodaj <element PackageReference> dla zestawu do projektu csproj lub vbproj.
- W przypadku .NET Framework dodaj odwołanie do zestawu przy użyciu okna dialogowego Dodawanie odwołania w Visual Studio lub przy użyciu
-reference
opcji wiersza polecenia dla kompilatorów języka C# lub Visual Basic.
W języku C# można użyć dwóch wersji tego samego zestawu w jednej aplikacji. Aby uzyskać więcej informacji, zobacz extern alias.
Zawartość pokrewna
Tytuł | Opis |
---|---|
Zawartość zestawu | Elementy tworzące zestaw. |
Manifest zestawu | Dane w manifeście zestawu i sposób ich przechowywania w zestawach. |
Globalna pamięć podręczna zestawów | Sposób przechowywania i korzystania z zestawów przez GAC. |
Zestawy o silnych nazwach | Cechy zestawów o silnych nazwach. |
Zagadnienia dotyczące zabezpieczeń zestawów | Jak działa zabezpieczenia z zestawami. |
Przechowywanie wersji zestawów | Omówienie zasad przechowywania wersji .NET Framework. |
Umieszczanie zestawu | Gdzie można zlokalizować zestawy. |
Zestawy i wykonywanie równoczesne | Używaj jednocześnie wielu wersji środowiska uruchomieniowego lub zestawu. |
Emitowanie dynamicznych metod i zestawów | Jak tworzyć zestawy dynamiczne. |
Jak środowisko uruchomieniowe lokalizuje zestawy | Jak .NET Framework rozwiązuje odwołania do zestawów w czasie wykonywania. |
Odwołanie
Zobacz też
- Format pliku zestawu .NET
- Przyjazne zestawy
- Odwoływanie się do zestawów
- Instrukcje: ładowanie i zwalnianie zestawów
- Instrukcje: używanie i debugowanie możliwości zwolnienia zestawu na platformie .NET Core
- Instrukcje: określanie, czy plik jest zestawem
- Instrukcje: sprawdzanie zawartości zestawu przy użyciu elementu MetadataLoadContext