Zestawy w środowisku .NETAssemblies in .NET

Zestawy stanowią podstawowe jednostki wdrożenia, kontroli wersji, ponownego użycia, zakresu aktywacji i uprawnień zabezpieczeń dla programu. Aplikacje oparte na sieci.Assemblies form the fundamental units of deployment, version control, reuse, activation scoping, and security permissions for .NET-based applications. Zestaw jest kolekcją typów i zasobów, które są tworzone w celu współdziałania i tworzą logiczną jednostkę funkcjonalności.An assembly is a collection of types and resources that are built to work together and form a logical unit of functionality. Zestawy mają postać plików wykonywalnych (exe) lub bibliotek dołączanych dynamicznie ( . dll) i są blokami konstrukcyjnymi aplikacji .NET.Assemblies take the form of executable (.exe) or dynamic link library (.dll) files, and are the building blocks of .NET applications. Udostępniają one środowisko uruchomieniowe języka wspólnego z informacjami, które muszą być świadome implementacji typów.They provide the common language runtime with the information it needs to be aware of type implementations. Zestaw można traktować jako kolekcję typów i zasobów, które tworzą logiczną jednostkę funkcjonalności i są zbudowane do współdziałania ze sobą.You can think of an assembly as a collection of types and resources that form a logical unit of functionality and are built to work together.

W programie .NET Core i .NET Framework można skompilować zestaw z jednego lub większej liczby plików kodu źródłowego.In .NET Core and .NET Framework, you can build an assembly from one or more source code files. W .NET Framework zestawy mogą zawierać co najmniej jeden moduł.In .NET Framework, assemblies can contain one or more modules. Pozwala to na zaplanowanie większych projektów w taki sposób, aby kilku deweloperów mógł działać na oddzielnych plikach kodu źródłowego lub w modułach, które są łączone w celu utworzenia jednego zestawu.This allows larger projects to be planned so that several developers can work on separate source code files or modules, which are combined to create a single assembly. Aby uzyskać więcej informacji o modułach , zobacz How to: Kompiluj zestawwieloplikowy.For more information about modules, see How to: Build a multifile assembly.

Zestawy mają następujące właściwości:Assemblies have the following properties:

  • Zestawy są zaimplementowane jako pliki exe lub dll .Assemblies are implemented as .exe or .dll files.

  • 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).For libraries that target the .NET Framework, you can share assemblies between applications by putting them in the global assembly cache (GAC). Aby można było dołączać je do pamięci podręcznej GAC, należy najpierw zastosować zestawy o silnych nazwach.You must strong-name assemblies before you can include them in the GAC. Aby uzyskać więcej informacji, zobacz zestawy o silnych nazwach.For more information, see Strong-named assemblies.

  • Zestawy są ładowane do pamięci tylko wtedy, gdy są wymagane.Assemblies are only loaded into memory if they are required. Jeśli nie są używane, nie są ładowane.If they aren't used, they aren't loaded. Oznacza to, że zestawy mogą być wydajnym sposobem zarządzania zasobami w większych projektach.This means that assemblies can be an efficient way to manage resources in larger projects.

  • Można programowo uzyskać informacje o zestawie przy użyciu odbicia.You can programmatically obtain information about an assembly by using reflection. Aby uzyskać więcej informacji, zobacz odbicie (C#) lub odbicie (Visual Basic).For more information, see Reflection (C#) or Reflection (Visual Basic).

  • Możesz załadować zestaw, aby sprawdzić go przy użyciu MetadataLoadContext klasy w .NET Core Assembly.ReflectionOnlyLoad i metody lub Assembly.ReflectionOnlyLoadFrom w programie .NET Core i .NET Framework.You can load an assembly just to inspect it by using the MetadataLoadContext class in .NET Core and the Assembly.ReflectionOnlyLoad or Assembly.ReflectionOnlyLoadFrom method in .NET Core and .NET Framework.

Zestawy w środowisku uruchomieniowym języka wspólnegoAssemblies in the common language runtime

Zestawy zapewniają środowisko uruchomieniowe języka wspólnego z informacjami, które muszą być świadome implementacji typów.Assemblies provide the common language runtime with the information it needs to be aware of type implementations. Dla środowiska uruchomieniowego typ nie istnieje poza kontekstem zestawu.To the runtime, a type does not exist outside the context of an assembly.

Zestaw definiuje następujące informacje:An assembly defines the following information:

  • Kod wykonywany przez środowisko uruchomieniowe języka wspólnego.Code that the common language runtime executes. Należy zauważyć, że każdy zestaw może mieć tylko jeden punkt DllMainwejścia WinMain:, Main, lub.Note that each assembly can have only one entry point: DllMain, WinMain, or Main.

  • Granica zabezpieczeń.Security boundary. Zestaw jest jednostką, w której uprawnienia są żądane i udzielane.An assembly is the unit at which permissions are requested and granted. Aby uzyskać więcej informacji na temat granic zabezpieczeń w zestawach, zobacz zagadnienia dotyczące zabezpieczeń zestawów.For more information about security boundaries in assemblies, see Assembly security considerations.

  • Granica typu.Type boundary. Każda tożsamość typu zawiera nazwę zestawu, w którym znajduje się.Every type's identity includes the name of the assembly in which it resides. Typ o nazwie MyType , który jest ładowany w zakresie jednego zestawu, nie jest taki sam jak typ o nazwie MyType , który jest ładowany w zakresie innego zestawu.A type called MyType that is loaded in the scope of one assembly is not the same as a type called MyType that is loaded in the scope of another assembly.

  • Granica zakresu odwołania.Reference scope boundary. Manifest zestawu zawiera metadane, który jest używany do rozpoznawania typów i spełniania żądań zasobów.The assembly manifest has metadata that is used for resolving types and satisfying resource requests. Manifest określa typy i zasoby, które mają zostać ujawnione poza zestawem, i wylicza inne zestawy, na których zależą.The manifest specifies the types and resources to expose outside the assembly, and enumerates other assemblies on which it depends. Kod języka pośredniego (MSIL) firmy Microsoft w przenośnym pliku wykonywalnym (PE) nie zostanie wykonany, chyba że ma skojarzony manifest zestawu.Microsoft intermediate language (MSIL) code in a portable executable (PE) file won't be executed unless it has an associated assembly manifest.

  • Granica wersji.Version boundary. Zestaw jest najmniejszą wersją jednostki w środowisku uruchomieniowym języka wspólnego.The assembly is the smallest versionable unit in the common language runtime. Wszystkie typy i zasoby w tym samym zestawie są w wersji jako jednostka.All types and resources in the same assembly are versioned as a unit. Manifest zestawu zawiera opis zależności wersji określonych dla wszystkich zestawów zależnych.The assembly manifest describes the version dependencies you specify for any dependent assemblies. Aby uzyskać więcej informacji na temat przechowywania wersji, zobacz wersja zestawu.For more information about versioning, see Assembly versioning.

  • Jednostka wdrożenia.Deployment unit. Po uruchomieniu aplikacji, tylko zestawy, które początkowo wywołuje aplikacja, muszą być obecne.When an application starts, only the assemblies that the application initially calls must be present. Inne zestawy, takie jak zestawy zawierające zasoby lokalizacyjne lub klasy narzędzi, można pobrać na żądanie.Other assemblies, such as assemblies containing localization resources or utility classes, can be retrieved on demand. Dzięki temu aplikacje będą proste i cienkie podczas pierwszego pobierania.This allows apps to be simple and thin when first downloaded. Aby uzyskać więcej informacji o wdrażaniu zestawów, zobacz wdrażanie aplikacji.For more information about deploying assemblies, see Deploy applications.

  • Jednostka wykonywania równoczesnego.Side-by-side execution unit. Aby uzyskać więcej informacji na temat uruchamiania wielu wersji zestawu, zobacz zestawy i wykonywanie równoczesne.For more information about running multiple versions of an assembly, see Assemblies and side-by-side execution.

Tworzenie zestawuCreate an assembly

Zestawy mogą być statyczne lub dynamiczne.Assemblies can be static or dynamic. Zestawy statyczne są przechowywane na dysku w przenośnych plikach wykonywalnych (PE).Static assemblies are stored on disk in portable executable (PE) files. Zestawy statyczne mogą zawierać interfejsy, klasy i zasoby, takie jak mapy bitowe, pliki JPEG i inne pliki zasobów.Static assemblies can include interfaces, classes, and resources like bitmaps, JPEG files, and other resource files. Można również tworzyć zestawy dynamiczne, które są uruchamiane bezpośrednio z pamięci i nie są zapisywane na dysku przed wykonaniem.You can also create dynamic assemblies, which are run directly from memory and aren't saved to disk before execution. Zestawy dynamiczne można zapisać na dysku po ich wykonaniu.You can save dynamic assemblies to disk after they have executed.

Istnieje kilka sposobów tworzenia zestawów.There are several ways to create assemblies. Możesz użyć narzędzi programistycznych, takich jak Visual Studio, które mogą tworzyć pliki . dll lub . exe .You can use development tools, such as Visual Studio, that can create .dll or .exe files. Korzystając z narzędzi dostępnych w Windows SDK, można tworzyć zestawy z modułami z innych środowisk programistycznych.You can use tools in the Windows SDK to create assemblies with modules from other development environments. Możesz również używać interfejsów API środowiska uruchomieniowego języka wspólnego, System.Reflection.Emittakich jak, do tworzenia zestawów dynamicznych.You can also use common language runtime APIs, such as System.Reflection.Emit, to create dynamic assemblies.

Kompiluj zestawy, tworząc je w programie Visual Studio, tworząc je przy użyciu narzędzi interfejsu wiersza polecenia platformy .NET Core lub tworząc zestawy .NET Framework przy użyciu kompilatora wiersza polecenia.Compile assemblies by building them in Visual Studio, building them with .NET Core command-line interface tools, or building .NET Framework assemblies with a command-line compiler. Aby uzyskać więcej informacji na temat kompilowania zestawów przy użyciu narzędzi interfejsu wiersza polecenia platformy .NET Core, zobacz Narzędzia interfejsu wiersza polecenia platformy .NET Core.For more information about building assemblies using .NET Core command-line interface tools, see .NET Core command-line interface tools. Do kompilowania zestawów przy użyciu kompilatorów wiersza polecenia, zobacz wiersza polecenia kompilacja z CSC. exe dla C#lub kompiluj z wiersza polecenia dla Visual Basic.For building assemblies with the command-line compilers, see Command-line build with csc.exe for C#, or Build from the command line for Visual Basic.

Uwaga

Aby skompilować zestaw w programie Visual Studio, w menu kompilacja wybierz polecenie Kompiluj.To build an assembly in Visual Studio, on the Build menu, select Build.

Manifest zestawuAssembly manifest

Każdy zestaw ma plik manifestu zestawu .Every assembly has an assembly manifest file. Podobnie jak w spisie treści, manifest zestawu zawiera:Similar to a table of contents, the assembly manifest contains:

  • Tożsamość zestawu (jego nazwa i wersja).The assembly's identity (its name and version).

  • Tabela plików opisująca wszystkie inne pliki wchodzące w skład zestawu, takie jak inne utworzone zestawy, których plik exe lub dll opiera się na plikach map bitowych lub plikach Readme.A file table describing all the other files that make up the assembly, such as other assemblies you created that your .exe or .dll file relies on, bitmap files, or Readme files.

  • Lista odwołania do zestawu, która jest listą wszystkich zależności zewnętrznych, takich jak . dlls lub innych plików.An assembly reference list, which is a list of all external dependencies, such as .dlls or other files. Odwołania do zestawów zawierają odwołania do obiektów globalnych i prywatnych.Assembly references contain references to both global and private objects. Obiekty globalne są dostępne dla wszystkich innych aplikacji.Global objects are available to all other applications. W programie .NET Core obiekty globalne są połączone z konkretnym środowiskiem uruchomieniowym platformy .NET Core.In .NET Core, global objects are coupled with a particular .NET Core runtime. W .NET Framework obiekty globalne znajdują się w globalnej pamięci podręcznej zestawów (GAC).In .NET Framework, global objects reside in the global assembly cache (GAC). Przykładem zestawu w globalnej pamięci podręcznej jest System. IO. dll .System.IO.dll is an example of an assembly in the GAC. Obiekty prywatne muszą znajdować się na poziomie katalogu w katalogu, w którym zainstalowano aplikację.Private objects must be in a directory level at or below the directory in which your app is installed.

Ponieważ zestawy zawierają informacje o zawartości, wersji i zależnościach, aplikacje korzystające z nich nie musi korzystają ze źródeł zewnętrznych, takich jak rejestr w systemach Windows, aby działać prawidłowo.Because assemblies contain information about content, versioning, and dependencies, the applications that use them needn't rely on external sources, such as the registry on Windows systems, to function properly. Zestawy zmniejszają konflikty biblioteki DLL i sprawiają, że aplikacje są bardziej niezawodne i łatwiejsze do wdrożenia.Assemblies reduce .dll conflicts and make your applications more reliable and easier to deploy. W wielu przypadkach można zainstalować program. Aplikacje oparte na sieci można po prostu skopiować pliki na komputer docelowy.In many cases, you can install a .NET-based application simply by copying its files to the target computer. Aby uzyskać więcej informacji, zobacz manifest zestawu.For more information, see Assembly manifest.

Dodawanie odwołania do zestawuAdd a reference to an assembly

Aby użyć zestawu w aplikacji, należy dodać do niego odwołanie.To use an assembly in an application, you must add a reference to it. Po przywoływaniu zestawu wszystkie dostępne typy, właściwości, metody i inne elementy członkowskie jego przestrzeni nazw są dostępne dla aplikacji, tak jakby ich kod był częścią pliku źródłowego.Once an assembly is referenced, all the accessible types, properties, methods, and other members of its namespaces are available to your application as if their code were part of your source file.

Uwaga

Większość zestawów z biblioteki klas .NET jest przywoływana automatycznie.Most assemblies from the .NET Class Library are referenced automatically. Jeśli zestaw systemowy nie jest automatycznie przywoływany, w przypadku platformy .NET Core można dodać odwołanie do pakietu NuGet, który zawiera zestaw.If a system assembly isn't automatically referenced, for .NET Core, you can add a reference to the NuGet package that contains the assembly. Użyj Menedżera pakietów NuGet w programie Visual Studio lub Dodaj <element PackageReference > dla zestawu do projektu . csproj lub . vbproj .Either use the NuGet Package Manager in Visual Studio, or add a <PackageReference> element for the assembly to the .csproj or .vbproj project. W .NET Framework można dodać odwołanie do zestawu przy użyciu okna dialogowego Dodaj odwołanie w programie Visual Studio lub przy użyciu -reference opcji wiersza polecenia dla kompilatorów C# lub Visual Basic .In .NET Framework, you can add a reference to the assembly by using the Add Reference dialog in Visual Studio, or by using the -reference command line option for the C# or Visual Basic compilers.

W C#programie można użyć dwóch wersji tego samego zestawu w pojedynczej aplikacji.In C#, you can use two versions of the same assembly in a single application. Aby uzyskać więcej informacji, zobacz alias zewnętrzny.For more information, see extern alias.

TytułTitle OpisDescription
Zawartość zestawuAssembly contents Elementy wchodzące w skład zestawu.Elements that make up an assembly.
Manifest zestawuAssembly manifest Dane w manifeście zestawu i sposób ich przechowywania w zestawach.Data in the assembly manifest, and how it is stored in assemblies.
Globalna pamięć podręczna zestawówGlobal assembly cache Sposób przechowywania i używania zestawów GAC.How the GAC stores and uses assemblies.
Zestawy o silnych nazwachStrong-named assemblies Charakterystyki zestawów o silnych nazwach.Characteristics of strong-named assemblies.
Zagadnienia dotyczące zabezpieczeń zestawówAssembly security considerations Sposób działania zabezpieczeń z zestawami.How security works with assemblies.
Przechowywanie wersji zestawuAssembly versioning Omówienie zasad dotyczących wersji .NET Framework.Overview of the .NET Framework versioning policy.
Położenie zestawuAssembly placement Gdzie można znaleźć zestawy.Where to locate assemblies.
Zestawy i wykonywanie równoczesneAssemblies and side-by-side execution Używaj jednocześnie wielu wersji środowiska uruchomieniowego lub zestawu.Use multiple versions of the runtime or an assembly simultaneously.
Program z zestawamiProgram with assemblies Tworzenie, podpisywanie i ustawianie atrybutów dla zestawów.How to create, sign, and set attributes on assemblies.
Emituj metody dynamiczne i zestawyEmit dynamic methods and assemblies Tworzenie zestawów dynamicznych.How to create dynamic assemblies.
Jak środowisko uruchomieniowe lokalizuje zestawyHow the runtime locates assemblies Jak .NET Framework rozwiązuje odwołania do zestawów w czasie wykonywania.How the .NET Framework resolves assembly references at run time.

Tematy pomocyReference

System.Reflection.Assembly

Zobacz takżeSee also