Esempio di assembly su più file
In questa sezione viene fornito un esempio completo che illustra i passaggi necessari per la creazione di un assembly su più file.
Passaggio 1 — Compilazione di file con spazi dei nomi a cui fanno riferimento altri file
Questo esempio ha inizio con un semplice blocco di codice per il file Stringer
. Stringer
presenta uno spazio dei nomi myStringer
con una classe denominata Stringer
. Nella classe Stringer
è disponibile un metodo denominato StringerMethod
, che consente di scrivere una singola riga nella console.
' Assembly building example in the .NET Framework SDK.
Imports System
Namespace myStringer
Public Class Stringer
Public Sub StringerMethod()
Console.WriteLine("This is a line from StringerMethod.")
End Sub
End Class
End Namespace
[C#]
// Assembly building example in the .NET Framework SDK.
using System;
namespace myStringer
{
public class Stringer
{
public void StringerMethod()
{
System.Console.WriteLine("This is a line from StringerMethod.");
}
}
}
Per compilare il codice, utilizzare il comando seguente:
vbc /t:module Stringer.vb
[C#]
csc /t:module Stringer.cs
Specificando il parametro module con l'opzione di compilatore /t: si indica che è necessario compilare il file come modulo anziché come assembly. Un modulo denominato Stringer.netmodule
, che non può essere aggiunto a un assembly, viene creato dal compilatore.
Passaggio 2 — Compilazione di moduli contenenti riferimenti ad altri moduli
In questo passaggio viene utilizzata l'opzione di compilazione /addmodule. Nell'esempio riportato di seguito un modulo di codice denominato Client
dispone di un metodo di punto di ingresso Main
contenente riferimenti a un metodo del modulo Stringer.dll
creato nel Passaggio 1.
Nell'esempio seguente viene mostrato il codice per Client
.
Imports System
Imports myStringer 'The namespace created in Stringer.netmodule.
Class MainClientApp
' Shared method Main is the entry point method.
Public Shared Sub Main()
Dim myStringInstance As New Stringer()
Console.WriteLine("Client code executes")
'myStringComp.Stringer()
myStringInstance.StringerMethod()
End Sub
End Class
[C#]
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");
//myStringComp.Stringer();
myStringInstance.StringerMethod();
}
}
Per compilare il codice, utilizzare il comando seguente:
vbc /addmodule:Stringer.netmodule /t:module Client.vb
[C#]
csc /addmodule:Stringer.netmodule /t:module Client.cs
Specificare l'opzione /t:module, poiché tale modulo verrà aggiunto a un assembly in un passaggio successivo. Specificare l'opzione /addmodule, poiché nel codice di Client
sono presenti riferimenti allo spazio dei nomi creato dal codice in Stringer.netmodule
. Un modulo denominato Client.netmodule
, contenente un riferimento a un altro modulo, Stringer.netmodule
, viene creato dal compilatore.
Nota Nei compilatori di C# e di Visual Basic viene supportata la creazione diretta di assembly su più file utilizzando le due diverse sintassi seguenti.
Un assembly su due file viene creato da due compilazioni:
vbc /t:module Stringer.vb vbc Client.vb /addmodule:Stringer.netmodule [C#] csc /t:module Stringer.cs csc Client.cs /addmodule:Stringer.netmodule
Un assembly su due file viene creato da una compilazione:
vbc /out:Stringer.netmodule Stringer.vb /out:Client.exe Client.vb [C#] csc /out:Client.exe Client.cs /out:Stringer.netmodule Stringer.cs
Passaggio 3 — Creazione di un assembly su più file tramite Assembly Linker
Per creare un assembly da un insieme di moduli di codice compilati, è possibile utilizzare Assembly Linker (Al.exe).
Per creare un assembly su più file tramite Assembly Linker
Al prompt dei comandi, digitare il comando seguente:
al <nome modulo> <nome modulo> ... /main:<nome metodo> /out:<nome file> /target:<tipo file di assembly>
Gli argomenti nome modulo di questo comando consentono di specificare il nome di ogni modulo da includere nell'assembly. L'opzione /main: consente di specificare il nome del metodo che corrisponde al punto di ingresso dell'assembly. L'opzione /out: consente di specificare il nome del file di output, contenente i metadati dell'assembly. L'opzione /target: consente di specificare che l'assembly è un file eseguibile (EXE) da console, un file eseguibile di Windows (WIN) o una libreria (LIB).
Nell'esempio seguente l'utilità Al.exe consente di creare un assembly denominato myAssembly.exe
, che corrisponde al file eseguibile da console. L'applicazione è costituita da due moduli, denominati Client.netmodule
e Stringer.netmodule
, e dal file eseguibile denominato myAssembly.exe
, contenente solo i metadati dell'assembly. Il punto di ingresso dell'assembly è costituito dal metodo Main
della classe MainClientApp
, situata nel file Client.dll
.
al Client.netmodule Stringer.netmodule /main:MainClientApp.Main /out:myAssembly.exe /target:exe
È possibile utilizzare MSIL Disassembler (Ildasm.exe) per esaminare i contenuti di un assembly o determinare se un file sia un assembly o un modulo.
Vedere anche
Creazione degli assembly | Visualizzazione dei contenuti dell'assembly | Come il runtime individua gli assembly | Creazione di un assembly su più file