Assembly su più fileMultifile assemblies

È possibile creare assembly su più file destinati ai .NET Framework usando compilatori della riga di comando o Visual Studio C++con Visual.You can create multifile assemblies that target the .NET Framework using command-line compilers or Visual Studio with Visual C++. Un file all'interno dell'assembly deve contenere il manifesto dell'assembly.One file in the assembly must contain the assembly manifest. Un assembly che avvia un'applicazione deve inoltre contenere un punto di ingresso, ad esempio un Main o WinMain metodo.An assembly that starts an application must also contain an entry point, such as a Main or WinMain method.

Si supponga, ad esempio, di disporre di un'applicazione che contiene due moduli di codice, client.cs e Stringer.cs.For example, suppose you have an application that contains two code modules, Client.cs and Stringer.cs. Stringer.cs crea lo spazio dei nomi myStringer a cui fa riferimento il codice in client.cs.Stringer.cs creates the myStringer namespace that is referenced by the code in Client.cs. Client.cs contiene il metodo Main, ovvero il punto di ingresso dell'applicazione.Client.cs contains the Main method, which is the application's entry point. In questo esempio vengono compilati i due moduli di codice e quindi viene creato un terzo file contenente il manifesto dell'assembly che avvia l'applicazione.In this example, you compile the two code modules, and then create a third file that contains the assembly manifest, which launches the application. Il manifesto dell'assembly fa riferimento ai moduli client e Stringer .The assembly manifest references both the Client and Stringer modules.

Nota

Negli assembly su più file può essere presente un solo punto di ingresso, anche se l'assembly include più moduli di codice.Multifile assemblies can have only one entry point, even if the assembly has multiple code modules.

La scelta di creare un assembly su più file può essere consigliabile per varie ragioni:There are several reasons you might want to create a multifile assembly:

  • Per combinare moduli scritti in linguaggi diversi.To combine modules written in different languages. Questo è il motivo più comune per la creazione di un assembly su più file.This is the most common reason for creating a multifile assembly.

  • Per ottimizzare il download di un'applicazione inserendo i tipi usati raramente in un modulo che verrà scaricato solo quando necessario.To optimize downloading an application by putting seldom-used types in a module that is downloaded only when needed.

    Nota

    Se si creano applicazioni che verranno scaricate usando il tag <object> con Microsoft Internet Explorer, è importante creare assembly su più file.If you are creating applications that will be downloaded using the <object> tag with Microsoft Internet Explorer, it is important that you create multifile assemblies. In questo scenario occorrerà creare un file separato dai moduli di codice che contenga solo il manifesto dell'assembly.In this scenario, you create a file separate from your code modules that contains only the assembly manifest. Internet Explorer scarica prima il manifesto dell'assembly e quindi crea i thread di lavoro per scaricare altri moduli o assembly eventualmente necessari.Internet Explorer downloads the assembly manifest first, and then creates worker threads to download any additional modules or assemblies required. Durante il download del file che contiene il manifesto dell'assembly, Internet Explorer non risponde all'input dell'utente.While the file containing the assembly manifest is being downloaded, Internet Explorer will be unresponsive to user input. Tanto minori saranno le dimensioni del file contenente il manifesto dell'assembly, tanto più breve sarà il tempo in cui Internet Explorer non risponderà.The smaller the file containing the assembly manifest, the less time Internet Explorer will be unresponsive.

  • Per combinare moduli di codice scritti da più sviluppatori.To combine code modules written by several developers. Sebbene ogni sviluppatore possa compilare ogni modulo di codice in un assembly, questa operazione può forzare l'esposizione pubblica di alcuni tipi che non sarebbero esposti se tutti i moduli venissero inclusi in un assembly su più file.Although each developer can compile each code module into an assembly, this can force some types to be exposed publicly that are not exposed if all modules are put into a multifile assembly.

Una volta creato l'assembly, è possibile firmare il file contenente il manifesto dell'assembly e, di conseguenza, l'assembly, oppure è possibile assegnare un nome sicuro al file e all'assembly e inserirlo nell'Global Assembly Cache.Once you create the assembly, you can sign the file that contains the assembly manifest, and hence the assembly, or you can give the file and the assembly a strong name and put it in the global assembly cache.

Vedere ancheSee also