Sestavení v .NET

Sestavení tvoří základní jednotky nasazení, správy verzí, opakované použití, rozsahu aktivace a oprávnění zabezpečení pro . Aplikace založené na net. Sestavení je kolekce typů a prostředků, které jsou vytvořeny tak, aby vzájemně spolupracovaly a tvořily logickou jednotku funkčnosti. Sestavení mají formu spustitelných souborů (.exe) nebo knihovny dynamického propojení (.dll) a jsou stavebními bloky aplikací .NET. Poskytují modul CLR (Common Language Runtime) informace, které musí znát implementace typů.

V rozhraní .NET a .NET Framework můžete sestavit sestavení z jednoho nebo více souborů zdrojového kódu. V .NET Framework mohou sestavení obsahovat jeden nebo více modulů. To umožňuje plánování větších projektů tak, aby několik vývojářů mohlo pracovat na samostatných souborech nebo modulech zdrojového kódu, které se zkombinují k vytvoření jednoho sestavení. Další informace o modulech naleznete v tématu Postupy: Sestavení vícesouborového sestavení.

Sestavení mají následující vlastnosti:

  • Sestavení se implementují jako soubory.exe nebo .dll .

  • U knihoven, které cílí na .NET Framework, můžete sdílet sestavení mezi aplikacemi tak, že je umístíte do globální mezipaměti sestavení (GAC). Před jejich zahrnutím do GAC je nutné sestavení silného názvu. Další informace naleznete v tématu Sestavení se silným názvem.

  • Sestavení se načtou do paměti pouze v případě potřeby. Pokud se nepoužívají, nenačtou se. To znamená, že sestavení mohou být efektivním způsobem správy zdrojů ve větších projektech.

  • Informace o sestavení můžete získat prostřednictvím kódu programu pomocí reflexe. Další informace najdete v tématu Reflexe (C#) nebo Reflexe (Visual Basic).

  • Sestavení můžete načíst pouze pro jeho kontrolu pomocí MetadataLoadContext třídy v .NET a .NET Framework. MetadataLoadContextAssembly.ReflectionOnlyLoad nahradí metody.

Sestavení v modulu CLR (Common Language Runtime)

Sestavení poskytují modul CLR (Common Language Runtime) informace, které musí znát implementace typů. V modulu runtime neexistuje typ mimo kontext sestavení.

Sestavení definuje následující informace:

  • Kód, který spustí modul CLR (Common Language Runtime). Všimněte si, že každé sestavení může mít pouze jeden vstupní bod: DllMain, WinMainnebo Main.

  • Hranice zabezpečení. Sestavení je jednotka, ve které jsou požadována a udělována oprávnění. Další informace o hranicích zabezpečení v sestaveních naleznete v tématu Aspekty zabezpečení sestavení.

  • Hranice typu. Jednotlivé identity typu zahrnují název sestavení, ve kterém se nachází. 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í.

  • Hranice oboru odkazu. Manifest sestavení obsahuje metadata, která se používají k překladu typů a uspokojování požadavků na prostředky. Manifest určuje typy a prostředky, které se mají vystavit mimo sestavení, a vytvoří výčet dalších sestavení, na kterých závisí. Kód jazyka MSIL (Microsoft Intermediate Language) v přenosném spustitelném souboru (PE) se nespustí, pokud nemá přidružený manifest sestavení.

  • Hranice verze. Sestavení je nejmenší verzí použitelná jednotka v modulu CLR (Common Language Runtime). Všechny typy a prostředky ve stejném sestavení jsou verze stejné jako jednotka. Manifest sestavení popisuje závislosti verzí, které zadáte pro všechna závislá sestavení. Další informace o správě verzí najdete v tématu Správa verzí sestavení.

  • Jednotka nasazení Při spuštění aplikace je nutné, aby byla k dispozici pouze ta sestavení, která aplikace zpočátku volá. Další sestavení, jako jsou sestavení obsahující lokalizační prostředky nebo třídy nástrojů, lze na vyžádání načíst. To umožňuje, aby aplikace byly při prvním stažení jednoduché a tenké. Další informace o nasazení sestavení naleznete v tématu Nasazení aplikací.

  • Souběžná spouštěcí jednotka. Další informace o spouštění více verzí sestavení naleznete v tématu Sestavení a souběžné spuštění.

Vytvoření sestavení

Sestavení mohou být statická nebo dynamická. Statická sestavení jsou uložena na disku v přenosných spustitelných souborech (PE). Statická sestavení mohou zahrnovat rozhraní, třídy a prostředky, jako jsou rastrové obrázky, soubory JPEG a další soubory prostředků. Můžete také vytvořit dynamická sestavení, která se spouštějí přímo z paměti a před spuštěním se neukládají na disk. Na disk můžete dynamická sestavení uložit až poté, co jsou spuštěna.

Existuje několik způsobů vytváření sestavení. Můžete použít vývojové nástroje, například Visual Studio, které můžou vytvářet .dll nebo .exe soubory. Pomocí nástrojů v sadě Windows SDK můžete vytvářet sestavení s moduly z jiných vývojových prostředí. K vytváření dynamických sestavení můžete použít také rozhraní API modulu CLR ( System.Reflection.EmitCommon Language Runtime).

Kompiluje sestavení tak, že je sestavíte v Visual Studio, sestavíte je pomocí nástrojů příkazového řádku .NET Core nebo sestavíte .NET Framework sestavení pomocí kompilátoru příkazového řádku. Další informace o vytváření sestavení pomocí rozhraní .NET CLI najdete v přehledu rozhraní .NET CLI.

Poznámka

Sestavení sestavení v Visual Studio vyberte v nabídce Sestavení.

Manifest sestavení

Každé sestavení má soubor manifestu sestavení . Manifest sestavení obsahuje podobně jako obsah:

  • Identita sestavení (její název a verze)

  • Tabulka souborů popisující všechny ostatní soubory, které tvoří sestavení, například jiná sestavení, která jste vytvořili, .exenebo .dll soubor spoléhá na soubory bitmap nebo readme.

  • Referenční seznam sestavení, který je seznamem všech externích závislostí, jako jsou .dlls nebo jiné soubory. Odkazy na sestavení obsahují odkazy na globální i soukromé objekty. Globální objekty jsou k dispozici pro všechny ostatní aplikace. V .NET Core jsou globální objekty svázány s konkrétním modulem runtime .NET Core. V .NET Framework se globální objekty nacházejí v globální mezipaměti sestavení (GAC). System.IO.dll je příkladem sestavení v GAC. Soukromé objekty musí být na úrovni adresáře nebo pod adresářem, ve kterém je aplikace nainstalovaná.

Vzhledem k tomu, že sestavení obsahují informace o obsahu, správě verzí a závislostech, nemusí aplikace, které je používají, záviset na externích zdrojích, jako je registr na Windows systémech, aby fungovaly správně. Sestavení snižují konflikty.dll a usnadňují nasazení aplikací. V mnoha případech můžete nainstalovat . Aplikace založená na net jednoduše zkopírováním souborů do cílového počítače. Další informace naleznete v manifestu sestavení.

Přidání odkazu na sestavení

Pokud chcete použít sestavení v aplikaci, musíte k němu přidat odkaz. Po odkazování na sestavení jsou pro vaši aplikaci k dispozici všechny přístupné typy, vlastnosti, metody a další členy jeho oborů názvů, jako by jejich kód byl součástí vašeho zdrojového souboru.

Poznámka

Většina sestavení z knihovny tříd .NET se automaticky odkazuje. Pokud systémové sestavení není automaticky odkazováno, přidejte odkaz jedním z následujících způsobů:

  • Pro .NET a .NET Core přidejte odkaz na balíček NuGet, který obsahuje sestavení. Buď použijte NuGet Správce balíčků v Visual Studio, nebo přidejte <element PackageReference> pro sestavení do projektu .csproj nebo .vbproj.
  • Pro .NET Framework přidejte odkaz na sestavení pomocí dialogového okna Přidat odkaz v Visual Studio nebo pomocí -reference možnosti příkazového řádku pro kompilátory jazyka C# nebo Visual Basic.

V jazyce C# můžete použít dvě verze stejného sestavení v jedné aplikaci. Další informace najdete v externím aliasu.

Nadpis Popis
Obsah sestavení Prvky, které tvoří sestavení.
Manifest sestavení Data v manifestu sestavení a způsob, jakým jsou uložena v sestaveních.
Globální mezipaměť sestavení Jak GAC ukládá a používá sestavení.
Sestavení se silným názvem Vlastnosti sestavení se silným názvem.
Důležité informace o zabezpečení sestavení Jak funguje zabezpečení se sestaveními.
Správa verzí sestavení Přehled zásad správy verzí .NET Framework
Umístění sestavení Kde vyhledat sestavení.
Sestavení a souběžné spouštění Současně použijte více verzí modulu runtime nebo sestavení.
Generování dynamických metod a sestavení Vytvoření dynamických sestavení
Jak modul runtime vyhledá sestavení Jak .NET Framework řeší odkazy na sestavení za běhu.

Reference

System.Reflection.Assembly

Viz také