Compartir a través de


Ejemplo de ensamblado de varios archivos

En esta sección se ofrece un ejemplo completo que ilustra los pasos necesarios para crear un ensamblado de varios archivos.

Paso 1: Compilar archivos con espacios de nombres a los que hacen referencia otros archivos

Este ejemplo comienza con algo de código sencillo para el archivo Stringer. Éste tiene un espacio de nombres denominado myStringer con una clase denominada Stringer. La clase Stringer contiene un método denominado StringerMethod que escribe una única línea en la consola.

' 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.");
         }
      }
   }

Use el comando siguiente para compilar este código:

vbc /t:module Stringer.vb
[C#]
csc /t:module Stringer.cs

Si se especifica el parámetro module con la opción de compilador /t: se indica que el archivo se debe compilar como un módulo y no como un ensamblado. El compilador produce un módulo denominado Stringer.netmodule, que se puede agregar a un ensamblado.

Paso 2: Compilar módulos con referencias a otros módulos

En este paso se usa la opción de compilador /addmodule. En este ejemplo, un módulo de código denominado Client tiene un método Main de punto de entrada que hace referencia a un método del módulo Stringer.dll creado en el paso 1.

En el siguiente ejemplo se muestra el código de 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();
   }
}

Use el comando siguiente para compilar este código:

vbc /addmodule:Stringer.netmodule /t:module Client.vb
[C#]
csc /addmodule:Stringer.netmodule /t:module Client.cs

Especifique la opción /t:module, ya que este módulo se va a agregar a un ensamblado en un paso posterior. Especifique la opción /addmodule, ya que el código de Client hace referencia a un espacio de nombres creado por el código de Stringer.netmodule. El compilador produce un módulo denominado Client.netmodule que contiene una referencia a otro módulo, Stringer.netmodule.

Nota   Los compiladores de C# y Visual Basic son compatibles con la creación directa de ensamblados de varios archivos mediante las dos sintaxis distintas siguientes.

  • Dos compilaciones crean un ensamblado de dos archivos:

    vbc /t:module Stringer.vb
    vbc Client.vb /addmodule:Stringer.netmodule
    [C#]
    csc /t:module Stringer.cs
    csc Client.cs /addmodule:Stringer.netmodule
    
  • Una compilación crea un ensamblado de dos archivos:

    vbc /out:Stringer.netmodule Stringer.vb /out:Client.exe Client.vb
    [C#]
    csc /out:Client.exe Client.cs /out:Stringer.netmodule Stringer.cs
    

Paso 3: Crear un ensamblado de varios archivos mediante la utilidad

La herramienta Assembly Linker (Al.exe) se puede usar para crear un ensamblado a partir de una colección de módulos de código compilados.

Para crear un ensamblado de varios archivos mediante la herramienta Assembly Linker

  • En el símbolo del sistema, escriba el siguiente comando:

    al <nombre del módulo> <nombre del módulo> ... /main:<nombre del método> /out:<nombre de archivo> /target:<tipo de archivo del ensamblado>

    En este comando, los argumentos de nombre de archivo especifican el nombre de todos los módulos que se van a incluir en el ensamblado. La opción /main: especifica el nombre del método que es el punto de entrada del ensamblado. La opción /out: especifica el nombre del archivo de salida que contiene metadatos del ensamblado. La opción /target: 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 siguiente ejemplo, Al.exe crea un ensamblado que es un ejecutable de aplicación de consola denominado myAssembly.exe. Esta aplicación está formada por dos módulos denominados Client.netmodule y Stringer.netmodule y el archivo ejecutable denominado myAssembly.exe, que sólo contiene metadatos del ensamblado. El punto de entrada del ensamblado es el método Main de la clase MainClientApp, que se encuentra en Client.dll.

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

Se puede usar el Desensamblador de MSIL (Ildasm.exe) para examinar el contenido de un ensamblado, o determinar si un archivo es un ensamblado o un módulo.

Vea también

Crear ensamblados | Ver el contenido de un ensamblado | Cómo el motor de tiempo de ejecución ubica ensamblados | Generar un ensamblado de varios archivos