Postupy: Vytvořit vícesouborové sestavení

Tato část popisuje postup použitý k vytvoření vícesouborového sestavení a poskytuje kompletní příklad, který ukazuje všechny kroky tohoto postupu.

Chcete-li vytvořit vícesouborové sestavení

  1. Zkompilujte všechny soubory, které obsahují obory názvů odkazované jinými moduly v sestavení, do modulů kódu. Výchozí přípona pro moduly kódu je . netmodule. Pokud například soubor s názvem Stringer vytváří obor názvů s názvem myStringer, na který je odkazováno v souboru kódu klienta, Stringer by měl být nejprve zkompilován do modulu kódu.

  2. Zkompilujte všechny ostatní moduly pomocí nezbytných možností kompilátoru k označení modulů, které jsou odkazovány v kódu.

  3. Použijte Propojovací program sestavení (Al.exe) pro vytvoření výstupního souboru, který obsahuje manifest sestavení. Tento soubor obsahuje informace o odkazech pro všechny moduly nebo prostředky, které jsou součástí sestavení.

    PoznámkaPoznámka

    Visual Studio 2005 rozhraní IDE pro C# a Visual Basic lze použít pouze k vytvoření jednosouborového sestavení.Pokud chcete vytvořit vícesouborové sestavení, musíte použít kompilátory příkazového řádku nebo Visual Studio 2005 s Visual C++.

Následující příklad ukazuje krok 1 výše uvedeného postupu kompilováním souborů se jmennými prostory, na které odkazují jiné soubory. Tento příklad začíná jednoduchých kódem pro soubor Stringer. Stringer obsahuje obor názvů pojmenovaný myStringer s třídou nazvanou Stringer. Třída Stringer obsahuje metodu nazvanou StringerMethod, která zapíše jeden řádek do konzoly.

' Assembly building example in the .NET Framework.
Imports System

Namespace myStringer
    Public Class Stringer
        Public Sub StringerMethod()
            System.Console.WriteLine("This is a line from StringerMethod.")
        End Sub
    End Class
End Namespace
// Assembly building example in the .NET Framework.
using System;

namespace myStringer
{
    public class Stringer
    {
        public void StringerMethod()
        {
            System.Console.WriteLine("This is a line from StringerMethod.");
        }
    }
}
// Assembly building example in the .NET Framework.
using namespace System;

namespace myStringer
{
    public ref class Stringer
    {
    public:
        void StringerMethod()
        {
            System::Console::WriteLine("This is a line from StringerMethod.");
        }
    };
}

Použijte následující příkaz pro zkompilování tohoto kódu:

vbc /t:module Stringer.vb
csc /t:module Stringer.cs
cl /clr:pure /LN Stringer.cpp

Určením parametru module společně s možností kompilátoru /t: vyjadřuje, že by měl být soubor kompilován jako modul, nikoli jako sestavení. Kompilátor vytvoří modul nazvaný Stringer.netmodule, které mohou být přidány k sestavení.

V kroku dvě výše uvedeného postupu musíte zkompilovat moduly s odkazy na ostatní moduly. Tento krok používá možnost kompilátoru /addmodule. V následujícím příkladu má modul kódu s názvem Client jako vstupní bod metodu Main, která odkazuje na metodu v modulu Stringer.dll vytvořený v kroku 1.

Následující příklad ukazuje kód pro Client.

Imports System
Imports myStringer 'The namespace created in Stringer.netmodule.

Class MainClientApp
    ' Static method Main is the entry point method.
    Public Shared Sub Main()
        Dim myStringInstance As New Stringer()
        Console.WriteLine("Client code executes")
        myStringInstance.StringerMethod()
    End Sub
End Class
using System;
using myStringer; //The namespace created in Stringer.netmodule.

class MainClientApp
{
    // Static method Main is the entry point method.
    public static void Main()
    {
        Stringer myStringInstance = new Stringer();
        Console.WriteLine("Client code executes");
        myStringInstance.StringerMethod();
    }
}
#using "Stringer.netmodule"

using namespace System;
using namespace myStringer; //The namespace created in Stringer.netmodule.

ref class MainClientApp
{
    // Static method Main is the entry point method.
public:
    static void Main()
    {
        Stringer^ myStringInstance = gcnew Stringer();
        Console::WriteLine("Client code executes");
        myStringInstance->StringerMethod();
    }
};

int main()
{
    MainClientApp::Main();
}

Použijte následující příkaz pro zkompilování tohoto kódu:

vbc /addmodule:Stringer.netmodule /t:module Client.vb
csc /addmodule:Stringer.netmodule /t:module Client.cs
cl /clr:pure /FUStringer.netmodule /LN Client.cpp

Určete možnost /t:module, protože tento modul bude přidán do sestavení v příštím kroku. Zadat /addmodule protože kód v Client odkazy vytvořené pomocí kódu v oboru Stringer.netmodule. Kompilátor vytvoří modul nazvaný Client.netmodule , který obsahuje odkaz na jiný modul Stringer.netmodule.

PoznámkaPoznámka

Kompilátory jazyka C# a Visual Basic podporují přímé vytváření vícesouborových sestavení pomocí dvou následujících různých syntaxí.

  • Dvě kompilace vytvoří dvousouborové sestavení:
vbc /t:module Stringer.vb
vbc Client.vb /addmodule:Stringer.netmodule
csc /t:module Stringer.cs
csc Client.cs /addmodule:Stringer.netmodule
cl /clr:pure /LN Stringer.cpp
cl /clr:pure Client.cpp /link /ASSEMBLYMODULE:Stringer.netmodule
  • Jedna kompilace vytvoří dvousouborové sestavení:
vbc /out:Client.exe Client.vb /out:Stringer.netmodule Stringer.vb
csc /out:Client.exe Client.cs /out:Stringer.netmodule Stringer.cs
cl /clr:pure /LN Stringer.cpp
cl /clr:pure Client.cpp /link /ASSEMBLYMODULE:Stringer.netmodule

Můžete použít Propojovací program sestavení (Al.exe) k vytvoření sestavení z kolekce zkompilovaných modulů kódu.

Chcete-li vytvořit vícesouborové sestavení pomocí propojovacího programu sestavení

  • Na příkazovém řádku zadejte následující příkaz:

    al <název modulu> <název modulu> … /main:<název metody> /out:<název souboru> /target:<typ souboru sestavení>

    V tomto příkazu argumenty název modulu určují název každého modulu, který chcete zahrnout do sestavení. Možnost /main: určuje název metody, která je vstupním bodem sestavení. Možnost /out: určuje název výstupního soubor, který obsahuje metadata sestavení. Možnost /target: určuje zda je sestavení spustitelný soubor konzolové aplikace (.exe), spustitelný soubor Windows (.win) nebo soubor knihovny (.lib).

V následujícím příkladu vytvoří Al.exe sestavení, které je spustitelným souborem konzolové aplikace nazvaný myAssembly.exe. Aplikace obsahuje dva moduly nazývá Client.netmodule a Stringer.netmodule, a spustitelný soubor s názvem myAssembly.exe, obsahuje pouze metadata sestavení. Vstupní bod sestavení je metoda Main ve třídě MainClientApp, která je umístěna v Client.dll.

al Client.netmodule Stringer.netmodule /main:MainClientApp.Main /out:myAssembly.exe /target:exe 

Můžete použít jazyk MSIL Disassembler (Ildasm.exe), chcete-li ověřit obsah sestavení nebo určit, zda je soubor sestavení nebo modul.

Viz také

Úkoly

Postupy: Zobrazení obsahu sestavení

Koncepty

Vytváření sestavení

How the Runtime Locates Assemblies

Vícesouborové sestavení