Sdílet prostřednictvím


Sestavení souběžných sestavení C/C++

Souběžné sestavení je kolekce prostředků – skupina knihoven DLL, tříd oken, serverů COM, knihoven typů nebo rozhraní – dostupná pro aplikaci za běhu. Hlavní výhodou opětovného zabalení knihoven DLL v sestaveních je to, že aplikace mohou současně používat více verzí sestavení a v případě vydání aktualizace je možné v současné době obsluhovat aktuálně nainstalovaná sestavení.

Aplikace jazyka C++ může používat jednu nebo několik knihoven DLL v různých částech aplikace. Za běhu se knihovny DLL načtou do hlavního procesu a spustí se požadovaný kód. Aplikace spoléhá na operační systém, aby vyhledala požadované knihovny DLL, pochopit, jaké další závislé knihovny DLL je třeba načíst, a pak je načíst společně s požadovanou knihovnou DLL. Ve verzích operačních systémů Windows starších než Windows XP, Windows Server 2003 a Windows Vista hledá zavaděč operačního systému závislé knihovny DLL v místní složce aplikace nebo v jiné složce zadané v systémové cestě. V systému Windows XP, Windows Server 2003 a Windows Vista může zavaděč operačního systému také vyhledat závislé knihovny DLL pomocí souboru manifestu a vyhledat souběžná sestavení, která obsahují tyto knihovny DLL.

Pokud je knihovna DLL vytvořena pomocí sady Visual Studio, má ve výchozím nastavení vložený manifest aplikace jako prostředek RT_MANIFEST s ID rovnajícím se 2. Stejně jako u spustitelného souboru tento manifest popisuje závislosti této knihovny DLL v jiných sestaveních. Předpokládá se, že knihovna DLL není součástí souběžného sestavení a aplikace, které závisí na této knihovně DLL, nebudou k jeho načtení používat manifest aplikace, ale spoléhá na zavaděč operačního systému najít tuto knihovnu DLL v systémové cestě.

Poznámka:

Je důležité, aby knihovna DLL, která používá manifest aplikace, měla manifest vložený jako prostředek s ID rovnajícím se 2. Pokud je knihovna DLL dynamicky načtena za běhu (například pomocí funkce LoadLibrary ), zavaděč operačního systému načte závislá sestavení zadaná v manifestu knihovny DLL. Během volání se nekontroluje LoadLibrary manifest externí aplikace pro knihovny DLL. Pokud manifest není vložený, může se zavaděč pokusit načíst nesprávné verze sestavení nebo se nepodaří najít závislá sestavení.

Jeden nebo několik souvisejících knihoven DLL lze znovu zabalit do souběžného sestavení s odpovídajícím manifestem sestavení, který popisuje, které soubory tvoří sestavení, a také závislost sestavení na jiných souběžných sestaveních.

Poznámka:

Pokud sestavení obsahuje jednu knihovnu DLL, doporučuje se vložit manifest sestavení do této knihovny DLL jako prostředek s ID rovna 1 a dát privátní sestavení stejný název jako knihovna DLL. Pokud je například název knihovny DLL mylibrary.dll, může být hodnota atributu name použitého v <elementu assemblyIdentity> manifestu také mylibrary. V některých případech je možné vytvořit externí manifest sestavení v případě, že knihovna obsahuje jiné rozšíření než .dll (například projekt ovládacích prvků ActiveX MFC vytvoří knihovnu .ocx). V tomto případě se název sestavení a jeho manifestu musí lišit od názvu knihovny DLL (například MyAssembly, MyAssembly.manifest a mylibrary.ocx). Přesto se ale doporučuje takové knihovny přejmenovat, aby měly extension.dll a vložit manifest jako prostředek, aby se snížily náklady na budoucí údržbu tohoto sestavení. Další informace o tom, jak operační systém hledá privátní sestavení, naleznete v části Pořadí vyhledávání sestavení.

Tato změna může umožnit nasazení odpovídajících knihoven DLL jako privátního sestavení v místní složce aplikace nebo jako sdílené sestavení v mezipaměti sestavení WinSxS. Aby bylo možné dosáhnout správného chování modulu runtime tohoto nového sestavení, je třeba provést několik kroků; jsou popsány v pokynech pro vytváření souběžných sestavení. Jakmile je sestavení správně vytvořeno, může být nasazeno jako sdílené nebo soukromé sestavení společně s aplikací, která na něm závisí. Při instalaci souběžných sestavení jako sdíleného sestavení můžete buď postupovat podle pokynů uvedených v instalaci sestavení Win32 pro souběžné sdílení v systému Windows XP , nebo použít slučovací moduly. Při instalaci souběžných sestavení jako privátního sestavení můžete pouze zkopírovat odpovídající knihovnu DLL, prostředky a manifest sestavení jako součást procesu instalace do místní složky aplikace na cílovém počítači a zajistit tak, aby bylo toto sestavení nalezeno za běhu zavaděčem (viz pořadí vyhledávání sestavení). Dalším způsobem je použít Instalační službu systému Windows a postupovat podle pokynů popsaných v instalaci sestavení Win32 pro soukromé použití aplikace v systému Windows XP.

Viz také

Sestavení izolovaných aplikací C/C++
Sestavení izolovaných aplikací C/C++ a souběžných sestavení