Sestavení v .NETAssemblies in .NET

Sestavení tvoří základní jednotky nasazení, správy verzí, opakovaného použití, oboru aktivace a oprávnění zabezpečení pro . NET-založené aplikace.Assemblies form the fundamental units of deployment, version control, reuse, activation scoping, and security permissions for .NET-based applications. Sestavení je kolekce typů a prostředků, které jsou vytvořeny tak, aby vzájemně spolupracovaly a tvořily logickou jednotku funkčnosti.An assembly is a collection of types and resources that are built to work together and form a logical unit of functionality. Sestavení mají podobu spustitelných souborů (EXE) nebo dynamické knihovny odkazů (DLL) a jsou stavebními kameny aplikací .NET.Assemblies take the form of executable (.exe) or dynamic link library (.dll) files, and are the building blocks of .NET applications. Poskytují běžný jazyk runtime s informacemi, které potřebuje znát implementace typu.They provide the common language runtime with the information it needs to be aware of type implementations.

V rozhraní .NET Core a rozhraní .NET Framework můžete sestavit sestavení z jednoho nebo více souborů zdrojového kódu.In .NET Core and .NET Framework, you can build an assembly from one or more source code files. V rozhraní .NET Framework mohou sestavení obsahovat jeden nebo více modulů.In .NET Framework, assemblies can contain one or more modules. To umožňuje naplánované větší projekty tak, aby několik vývojářů mohlo pracovat na samostatných zdrojových kódových souborech nebo modulech, které jsou kombinovány za účelem vytvoření jednoho sestavení.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. Další informace o modulech naleznete v tématu How to: Build a multifile assembly.For more information about modules, see How to: Build a multifile assembly.

Sestavení mají následující vlastnosti:Assemblies have the following properties:

Sestavení v zaběhu společného jazykaAssemblies in the common language runtime

Sestavení poskytují běžný jazyk runtime s informacemi, které potřebuje znát implementace typu.Assemblies provide the common language runtime with the information it needs to be aware of type implementations. V modulu runtime neexistuje typ mimo kontext sestavení.To the runtime, a type does not exist outside the context of an assembly.

Sestavení definuje následující informace:An assembly defines the following information:

  • Kód, který spustí běžný jazyk runtime.Code that the common language runtime executes. Všimněte si, že každé sestavení DllMain WinMainmůže Mainmít pouze jeden vstupní bod: , , nebo .Note that each assembly can have only one entry point: DllMain, WinMain, or Main.

  • Hranice zabezpečení.Security boundary. Sestavení je jednotka, ve které jsou požadována a udělována oprávnění.An assembly is the unit at which permissions are requested and granted. Další informace o hranicích zabezpečení v sestaveních naleznete v tématu Aspekty zabezpečení sestavení.For more information about security boundaries in assemblies, see Assembly security considerations.

  • Hranice typu.Type boundary. Jednotlivé identity typu zahrnují název sestavení, ve kterém se nachází.Every type's identity includes the name of the assembly in which it resides. Typ s názvem MyType, který je načten v oboru jednoho sestavení, není stejný jako typ s názvem MyType, který je načten v oboru jiného sestavení.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.

  • Hranice referenčního oboru.Reference scope boundary. Manifest sestavení obsahuje metadata, která se používají pro řešení typů a splnění požadavků na prostředky.The assembly manifest has metadata that is used for resolving types and satisfying resource requests. Manifest určuje typy a prostředky vystavit mimo sestavení a vyjmenovává další sestavení, na kterých závisí.The manifest specifies the types and resources to expose outside the assembly, and enumerates other assemblies on which it depends. Kód zprostředkujícího jazyka (MSIL) společnosti Microsoft v přenosném spustitelném souboru (PE) nebude spuštěn, pokud nebude mít přidružený manifest sestavení.Microsoft intermediate language (MSIL) code in a portable executable (PE) file won't be executed unless it has an associated assembly manifest.

  • Hranice verze.Version boundary. Sestavení je nejmenší verzí jednotky v běžném jazyce runtime.The assembly is the smallest versionable unit in the common language runtime. Všechny typy a prostředky ve stejném sestavení jsou verzí jako jednotka.All types and resources in the same assembly are versioned as a unit. Manifest sestavení popisuje závislosti verze, které zadáte pro všechna závislá sestavení.The assembly manifest describes the version dependencies you specify for any dependent assemblies. Další informace o správu verzí naleznete v tématu Správa verzí sestavení.For more information about versioning, see Assembly versioning.

  • Jednotka pro nasazení.Deployment unit. Při spuštění aplikace je nutné, aby byla k dispozici pouze ta sestavení, která aplikace zpočátku volá.When an application starts, only the assemblies that the application initially calls must be present. Ostatní sestavení, jako jsou například sestavení obsahující prostředky lokalizace nebo třídy nástrojů, lze načíst na vyžádání.Other assemblies, such as assemblies containing localization resources or utility classes, can be retrieved on demand. To umožňuje, aby aplikace byly jednoduché a tenké při prvním stažení.This allows apps to be simple and thin when first downloaded. Další informace o nasazení sestavení naleznete v tématu Nasazení aplikací.For more information about deploying assemblies, see Deploy applications.

  • Souběžně s popravčí jednotkou.Side-by-side execution unit. Další informace o spuštění více verzí sestavení naleznete v tématu sestavení a souběžné spuštění.For more information about running multiple versions of an assembly, see Assemblies and side-by-side execution.

Vytvoření sestavyCreate an assembly

Sestavení mohou být statická nebo dynamická.Assemblies can be static or dynamic. Statická sestavení jsou uložena na disku v přenosných spustitelných souborech (PE).Static assemblies are stored on disk in portable executable (PE) files. Statická sestavení mohou zahrnovat rozhraní, třídy a prostředky, jako jsou rastrové obrázky, soubory JPEG a další soubory prostředků.Static assemblies can include interfaces, classes, and resources like bitmaps, JPEG files, and other resource files. Můžete také vytvořit dynamická sestavení, která jsou spuštěna přímo z paměti a nejsou uložena na disk před spuštěním.You can also create dynamic assemblies, which are run directly from memory and aren't saved to disk before execution. Na disk můžete dynamická sestavení uložit až poté, co jsou spuštěna.You can save dynamic assemblies to disk after they have executed.

Existuje několik způsobů vytváření sestavení.There are several ways to create assemblies. Můžete použít vývojové nástroje, jako je například Visual Studio, které můžete vytvářet soubory DLL nebo EXE.You can use development tools, such as Visual Studio, that can create .dll or .exe files. Pomocí nástrojů sady Windows SDK můžete vytvářet sestavení s moduly z jiných vývojových prostředí.You can use tools in the Windows SDK to create assemblies with modules from other development environments. K vytvoření dynamických sestavení můžete také System.Reflection.Emitpoužít rozhraní API pro běžné běhové běhy jazyka, například .You can also use common language runtime APIs, such as System.Reflection.Emit, to create dynamic assemblies.

Kompilujte sestavení jejich sestavením v sadě Visual Studio, jejich vytvářením pomocí nástrojů rozhraní příkazového řádku .NET Core nebo sestavením rozhraní .NET Framework pomocí kompilátoru příkazového řádku.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. Další informace o sestavenísestavení pomocí rozhraní CLI jádra .NET naleznete v tématu přehled rozhraní .NET Core CLI.For more information about building assemblies using .NET Core CLI, see .NET Core CLI overview. Vytváření sestavení s kompilátory příkazového řádku naleznete v tématu sestavení příkazového řádku s csc.exe pro C#nebo Sestavení z příkazového řádku pro jazyk 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.

Poznámka

Chcete-li vytvořit sestavení v sadě Visual Studio, v nabídce Sestavení vyberte Build.To build an assembly in Visual Studio, on the Build menu, select Build.

Manifest sestaveníAssembly manifest

Každé sestavení má soubor manifestu sestavení.Every assembly has an assembly manifest file. Podobně jako obsah obsahuje manifest sestavení:Similar to a table of contents, the assembly manifest contains:

  • Identita sestavení (jeho název a verze).The assembly's identity (its name and version).

  • Tabulka souborů popisující všechny ostatní soubory, které tvoří sestavení, například jiná sestavení, která jste vytvořili a na která se soubor EXE nebo DLL spoléhá, na bitmapové soubory nebo soubory 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.

  • Seznam odkazů sestavení, který je seznamem všech externích závislostí, například DLLs nebo jiných souborů.An assembly reference list, which is a list of all external dependencies, such as .dlls or other files. Odkazy na sestavení obsahují odkazy na globální i soukromé objekty.Assembly references contain references to both global and private objects. Globální objekty jsou k dispozici pro všechny ostatní aplikace.Global objects are available to all other applications. V .NET Core globální objekty jsou spojeny s konkrétní .NET Core runtime.In .NET Core, global objects are coupled with a particular .NET Core runtime. V rozhraní .NET Framework jsou globální objekty umístěny v globální mezipaměti sestavení (GAC).In .NET Framework, global objects reside in the global assembly cache (GAC). System.IO.dll je příkladem sestavení v GAC.System.IO.dll is an example of an assembly in the GAC. Soukromé objekty musí být na úrovni adresáře v adresáři, ve kterém je aplikace nainstalovaná, nebo pod ním.Private objects must be in a directory level at or below the directory in which your app is installed.

Vzhledem k tomu, že sestavení obsahují informace o obsahu, správu verzí a závislostech, aplikace, které je používají, nemusí spoléhat na externí zdroje, jako je například registr v systémech Windows, aby fungovaly správně.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. Sestavení snižují konflikty dll a usnadňují jejich spolehlivost a snadnější nasazení aplikací.Assemblies reduce .dll conflicts and make your applications more reliable and easier to deploy. V mnoha případech můžete nainstalovat . NET jednoduše zkopírováním svých souborů do cílového počítače.In many cases, you can install a .NET-based application simply by copying its files to the target computer. Další informace naleznete v tématu Manifest sestavení.For more information, see Assembly manifest.

Přidání odkazu na sestaveníAdd a reference to an assembly

Chcete-li použít sestavení v aplikaci, musíte na něj přidat odkaz.To use an assembly in an application, you must add a reference to it. Jakmile je odkazováno na sestavení, všechny přístupné typy, vlastnosti, metody a další členy jeho oborů názvů jsou k dispozici pro vaši aplikaci, jako kdyby jejich kód byl součástí zdrojového souboru.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.

Poznámka

Většina sestavení z knihovny tříd .NET je odkazována automaticky.Most assemblies from the .NET Class Library are referenced automatically. Pokud sestavení systému není automaticky odkazováno, pro .NET Core, můžete přidat odkaz na balíček NuGet, který obsahuje sestavení.If a system assembly isn't automatically referenced, for .NET Core, you can add a reference to the NuGet package that contains the assembly. Buď použijte Správce balíčků NuGet v sadě Visual Studio, nebo přidejte element <PackageReference> pro sestavení do projektu .csproj nebo .vbproj.Either use the NuGet Package Manager in Visual Studio, or add a <PackageReference> element for the assembly to the .csproj or .vbproj project. V rozhraní .NET Framework můžete přidat odkaz na sestavení pomocí dialogového okna Přidat -reference odkaz v sadě Visual Studio nebo pomocí možnosti příkazového řádku pro kompilátory jazyka C# nebo 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.

V c#, můžete použít dvě verze stejného sestavení v jedné aplikaci.In C#, you can use two versions of the same assembly in a single application. Další informace naleznete v tématu extern alias.For more information, see extern alias.

NadpisTitle PopisDescription
Obsah sestaveníAssembly contents Prvky, které tvoří sestavení.Elements that make up an assembly.
Manifest sestaveníAssembly manifest Data v manifestu sestavení a způsob, jakým je uložen v sestaveních.Data in the assembly manifest, and how it is stored in assemblies.
Globální mezipaměť sestaveníGlobal assembly cache Jak GAC ukládá a používá sestavení.How the GAC stores and uses assemblies.
Sestavení se silným názvemStrong-named assemblies Charakteristiky sestavení se silným názvem.Characteristics of strong-named assemblies.
Důležité informace o zabezpečení sestaveníAssembly security considerations Jak zabezpečení funguje s sestaveními.How security works with assemblies.
Správa verzí sestaveníAssembly versioning Přehled zásad správy verzí rozhraní .NET Framework.Overview of the .NET Framework versioning policy.
Umístění sestaveníAssembly placement Kde lokalizovat sestavy.Where to locate assemblies.
Sestavení a souběžné spouštěníAssemblies and side-by-side execution Používejte více verzí runtime nebo sestavení současně.Use multiple versions of the runtime or an assembly simultaneously.
Generování dynamických metod a sestaveníEmit dynamic methods and assemblies Jak vytvořit dynamická sestavení.How to create dynamic assemblies.
Jak runtime vyhledá sestaveníHow the runtime locates assemblies Jak rozhraní .NET Framework řeší odkazy na sestavení za běhu.How the .NET Framework resolves assembly references at run time.

OdkazReference

System.Reflection.Assembly

Viz takéSee also