Creazione di un assembly su più file

Per creare assembly su più file, è possibile utilizzare i compilatori della riga di comando o Visual Studio .NET con le estensioni gestite per C++. È necessario che almeno un file dell'assembly contenga il manifesto dell'assembly. È inoltre necessario che un assembly che avvia un'applicazione contenga un punto di ingresso, ad esempio un metodo Main o WinMain.

Si immagini, ad esempio, un'applicazione con due moduli di codice, Client.cs e Stringer.cs. In Stringer.cs viene creato lo spazio dei nomi myStringer a cui fa riferimento il codice in Client.cs. Client.cs contiene il metodo Main, che è il punto di ingresso dell'applicazione. In questo esempio si compilano i due moduli di codice, quindi si crea un terzo file contenente il manifesto dell'assembly, che consente il lancio dell'applicazione. Nel manifesto dell'assembly sono presenti riferimenti sia al modulo Client che al modulo Stringer.

Nota   Negli assembly su più file è consentito un solo punto di ingresso, anche se l'assembly dispone di più moduli di codice.

La creazione di un assembly su più file potrebbe risultare consigliabile per svariate ragioni:

  • Per combinare moduli scritti in linguaggi diversi. L'assembly su più file viene solitamente creato per questa ragione.

  • Per ottimizzare il download di un'applicazione inserendo i tipi raramente utilizzati in un modulo che viene scaricato solo quando necessario.

    Nota   Se si creano applicazioni il cui download verrà eseguito utilizzando il tag <object> con Microsoft Internet Explorer, la creazione di assembly su più file risulta essenziale. In uno scenario di questo tipo si crea un file distinto dai moduli di codice e contenente solo il manifesto dell'assembly. In Internet Explorer viene eseguito prima di tutto il download del manifesto dell'assembly, quindi vengono creati thread di lavoro per eseguire il download di eventuali moduli o assembly aggiuntivi necessari. Durante il download del file contenente il manifesto dell'assembly, Internet Explorer non risponderà all'input dell'utente. Dimensioni ridotte del file contenente il manifesto dell'assembly implicano una riduzione del tempo di assenza di risposta da parte di Internet Explorer.

  • Per combinare moduli di codice scritti da diversi sviluppatori. Benché i singoli sviluppatori siano in grado di compilare ogni modulo di codice nell'assembly, è possibile che questa operazione provochi l'esposizione di alcuni tipi, che non risultano esposti se tutti i moduli vengono inseriti in un assembly su più file.

Una volta creato l'assembly, è possibile firmare il file contenente il manifesto dell'assembly (e quindi l'assembly) o assegnare un nome sicuro al file (e all'assembly) e inserirlo nella cache di assembly globale.

Per creare un assembly su più file

  1. Compilare in moduli di codice tutti i file contenenti spazi dei nomi a cui fanno riferimento altri moduli dell'assembly. L'estensione predefinita per i moduli di codice è NETMODULE. Se ad esempio un file denominato Stringer crea uno spazio dei nomi denominato myStringer a cui si fa riferimento nel codice del file Client, sarà innanzitutto necessario compilare Stringer in un modulo di codice.

  2. Compilare tutti gli altri moduli, utilizzando le opzioni di compilatore necessarie per indicare gli altri moduli a cui si fa riferimento nel codice.

  3. Utilizzare l'utilità Assembly Linker (Al.exe) per creare un file di output contenente il manifesto dell'assembly. In questo file sono contenute informazioni di riferimento per tutti i moduli o le risorse che fanno parte dell'assembly. Il manifesto è in grado di fungere da file eseguibile dell'applicazione.

    Nota   È possibile utilizzare l'IDE di Visual Studio .NET per C# e Visual Basic solo per la creazione di assembly su singolo file. Per creare assembly su più file, è necessario utilizzare i compilatori della riga di comando o Visual Studio .NET con le estensioni gestite per C++.

Nella sezione che segue è contenuto un esempio di assembly su più file in cui vengono illustrati i tre passaggi descritti.

Vedere anche

Programmazione con gli assembly