Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
Nota:
Este artículo es específico de .NET Framework. No se aplica a implementaciones más recientes de .NET, incluidas .NET 6 y versiones posteriores.
En este artículo se explica cómo crear un ensamblado de varios archivos y se proporciona código que ilustra cada paso del procedimiento.
Nota:
El IDE de Visual Studio para C# y Visual Basic solo se pueden usar para crear ensamblados de un solo archivo. Si desea crear ensamblados de varios archivos, debe usar los compiladores de línea de comandos o Visual Studio con Visual C++. Los ensamblados de varios archivos solo son compatibles con .NET Framework.
Creación de un ensamblado de varios archivos
Compile todos los archivos que contienen espacios de nombres a los que hacen referencia otros módulos del ensamblado en módulos de código. La extensión predeterminada para los módulos de código es .netmodule.
Por ejemplo, supongamos que el
Stringerarchivo tiene un espacio de nombres denominadomyStringer, que incluye una clase denominadaStringer. LaStringerclase contiene un método denominadoStringerMethodque escribe una sola línea en la consola.// 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."); } }; }// 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. Namespace myStringer Public Class Stringer Public Sub StringerMethod() System.Console.WriteLine("This is a line from StringerMethod.") End Sub End Class End NamespaceUse el siguiente comando para compilar este código:
cl /clr:pure /LN Stringer.cppcsc /t:module Stringer.csvbc /t:module Stringer.vbEspecificar el parámetro de módulo con la
/t:opción del compilador indica que el archivo debe compilarse como un módulo en lugar de como un ensamblado. El compilador genera un módulo denominado Stringer.netmodule, que se puede agregar a un ensamblado.Compile todos los demás módulos mediante las opciones del compilador necesarias para indicar los demás módulos a los que se hace referencia en el código. En este paso se usa la
/addmoduleopción del compilador.En el ejemplo siguiente, un módulo de código denominado Client tiene un método de punto
Mainde entrada que hace referencia a un método en el módulo Stringer.netmodule creado en el paso 1.#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(); }using System; using myStringer; 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(); } }Imports myStringer 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 ClassUse el siguiente comando para compilar este código:
cl /clr:pure /FUStringer.netmodule /LN Client.cppcsc /addmodule:Stringer.netmodule /t:module Client.csvbc /addmodule:Stringer.netmodule /t:module Client.vbEspecifique la
/t:moduleopción porque este módulo se agregará a un ensamblado en un paso futuro. Especifique la/addmoduleopción porque el código del cliente hace referencia a un espacio de nombres creado por el código en Stringer.netmodule. El compilador genera un módulo denominado Client.netmodule que contiene una referencia a otro módulo , Stringer.netmodule.Nota:
Los compiladores de C# y Visual Basic admiten la creación directa de ensamblados de varios archivos mediante las dos sintaxis diferentes siguientes.
Dos compilaciones crean un ensamblado de dos archivos:
cl /clr:pure /LN Stringer.cpp cl /clr:pure Client.cpp /link /ASSEMBLYMODULE:Stringer.netmodulecsc /t:module Stringer.cs csc Client.cs /addmodule:Stringer.netmodulevbc /t:module Stringer.vb vbc Client.vb /addmodule:Stringer.netmoduleUna compilación crea un ensamblado de dos archivos:
cl /clr:pure /LN Stringer.cpp cl /clr:pure Client.cpp /link /ASSEMBLYMODULE:Stringer.netmodulecsc /out:Client.exe Client.cs /out:Stringer.netmodule Stringer.csvbc /out:Client.exe Client.vb /out:Stringer.netmodule Stringer.vbUtilice Assembly Linker (Al.exe) para crear el archivo de salida que contiene el manifiesto del ensamblado. Este archivo contiene información de referencia para todos los módulos o recursos que forman parte del ensamblado.
En el símbolo del sistema, escriba el siguiente comando:
al< nombre del módulo><nombre del módulo>/main:< nombre del>/out:< métodonombre de archivo>/target:<tipo de archivo de ensamblado>En este comando, los argumentos de nombre del módulo especifican el nombre de cada módulo que se va a incluir en el ensamblado. La
/main:opción especifica el nombre del método que es el punto de entrada del ensamblado. La/out:opción especifica el nombre del archivo de salida, que contiene metadatos de ensamblado. La/target:opción especifica que el ensamblado es un archivo ejecutable de aplicación de consola (.exe), un archivo ejecutable de Windows (.win) o un archivo de biblioteca (.lib).En el ejemplo siguiente, Al.exe crea un ensamblado que es un ejecutable de aplicación de consola denominado myAssembly.exe. La aplicación consta de dos módulos denominados Client.netmodule y Stringer.netmodule, y el archivo ejecutable denominado myAssembly.exe, que solo contiene metadatos de ensamblado. El punto de entrada del ensamblado es el
Mainmétodo de la claseMainClientApp, que se encuentra en Client.dll.al Client.netmodule Stringer.netmodule /main:MainClientApp.Main /out:myAssembly.exe /target:exePuede usar el desensamblador de IL (Ildasm.exe) para examinar el contenido de un ensamblado o determinar si un archivo es un ensamblado o un módulo.