Condividi tramite


Procedura: creare e utilizzare assembly dalla riga di comando (C# e Visual Basic)

Un assembly, o una libreria a collegamento dinamico (DLL), viene collegato al programma in fase di esecuzione. Per dimostrare la compilazione e l'uso di una DLL, si consideri il seguente scenario:

  • MathLibrary.DLL: il file di libreria che contiene i metodi da chiamare in fase di esecuzione. In questo esempio, la DLL contiene due metodi, Add e Multiply.

  • Add: il file di origine che contiene il metodo Add. Restituisce la somma dei propri parametri. La classe AddClass che contiene il metodo Add è un membro dello spazio dei nomi UtilityMethods.

  • Mult: il codice sorgente che contiene il metodo Multiply. Restituisce il prodotto dei propri parametri. La classe MultiplyClass che contiene il metodo Multiply è anche un membro dello spazio dei nomi UtilityMethods.

  • TestCode: il file che contiene il metodo Main. Utilizza i metodi nel file DLL per calcolare la somma e il prodotto degli argomenti in fase di esecuzione.

Esempio

' File: Add.vb  
Namespace UtilityMethods
    Public Class AddClass
        Public Shared Function Add(ByVal i As Long, ByVal j As Long) As Long 
            Return i + j
        End Function 
    End Class 
End Namespace


...


' File: Mult.vb 
Namespace UtilityMethods
    Public Class MultiplyClass
        Public Shared Function Multiply(ByVal x As Long, ByVal y As Long) As Long 
            Return x * y
        End Function 
    End Class 
End Namespace


...


' File: TestCode.vb 

Imports UtilityMethods

Module Test

    Sub Main(ByVal args As String())


        System.Console.WriteLine("Calling methods from MathLibrary.DLL:")

        If args.Length <> 2 Then
            System.Console.WriteLine("Usage: TestCode <num1> <num2>")
            Return 
        End If 

        Dim num1 As Long = Long.Parse(args(0))
        Dim num2 As Long = Long.Parse(args(1))

        Dim sum As Long = AddClass.Add(num1, num2)
        Dim product As Long = MultiplyClass.Multiply(num1, num2)

        System.Console.WriteLine("{0} + {1} = {2}", num1, num2, sum)
        System.Console.WriteLine("{0} * {1} = {2}", num1, num2, product)

    End Sub 

End Module 

' Output (assuming 1234 and 5678 are entered as command-line arguments): 
' Calling methods from MathLibrary.DLL: 
' 1234 + 5678 = 6912 
' 1234 * 5678 = 7006652        
// File: Add.cs  
namespace UtilityMethods
{
    public class AddClass 
    {
        public static long Add(long i, long j) 
        { 
            return (i + j);
        }
    }
}


...


// File: Mult.cs 
namespace UtilityMethods 
{
    public class MultiplyClass
    {
        public static long Multiply(long x, long y) 
        {
            return (x * y); 
        }
    }
}


...


// File: TestCode.cs 

using UtilityMethods;

class TestCode
{
    static void Main(string[] args) 
    {
        System.Console.WriteLine("Calling methods from MathLibrary.DLL:");

        if (args.Length != 2)
        {
            System.Console.WriteLine("Usage: TestCode <num1> <num2>");
            return;
        }

        long num1 = long.Parse(args[0]);
        long num2 = long.Parse(args[1]);

        long sum = AddClass.Add(num1, num2);
        long product = MultiplyClass.Multiply(num1, num2);

        System.Console.WriteLine("{0} + {1} = {2}", num1, num2, sum);
        System.Console.WriteLine("{0} * {1} = {2}", num1, num2, product);
    }
}
/* Output (assuming 1234 and 5678 are entered as command-line arguments):
    Calling methods from MathLibrary.DLL:
    1234 + 5678 = 6912
    1234 * 5678 = 7006652        
*/

Questo file contiene l'algoritmo che utilizza i metodi della DLL Add e Multiply. Inizia con l'analisi degli argomenti immessi dalla riga di comando, num1 e num2. Calcola quindi la somma utilizzando il metodo Add sulla classe AddClass e il prodotto utilizzando il metodo Multiply sulla classe MultiplyClass.

Si noti che la direttiva using (Imports in Visual Basic) all'inizio del file consente di utilizzare i nomi di classe non qualificati per fare riferimento ai metodi della DLL in fase di compilazione, ad esempio:

MultiplyClass.Multiply(num1, num2)
MultiplyClass.Multiply(num1, num2);

In caso contrario, è necessario utilizzare i nomi completi, ad esempio:

UtilityMethods.MultiplyClass.Multiply(num1, num2)
UtilityMethods.MultiplyClass.Multiply(num1, num2);

Esecuzione

Per eseguire il programma, immettere il nome del file EXE seguito da due numeri, ad esempio:

TestCode 1234 5678

Compilazione del codice

Per compilare il file MathLibrary.DLL, compilare i due file Add e Mult utilizzando la seguente riga di comando:

vbc /target:library /out:MathLibrary.DLL Add.vb Mult.vb
csc /target:library /out:MathLibrary.DLL Add.cs Mult.cs

L'opzione /target:library indica al compilatore di generare un file DLL e non un file EXE. L'opzione /out seguita da un nome di file è utilizzata per specificare il nome del file DLL. In sua assenza, il compilatore utilizza il primo file (Add.cs) come nome della DLL.

Per compilare il file eseguibile, TestCode.exe, utilizzare la seguente riga di comando:

vbc /out:TestCode.exe /reference:MathLibrary.DLL TestCode.vb
csc /out:TestCode.exe /reference:MathLibrary.DLL TestCode.cs

L'opzione /out indica al compilatore di generare un file EXE e specifica il nome del file di output (TestCode.exe). Questa opzione del compilatore è facoltativa. L'opzione del compilatore /reference specifica i file DLL utilizzati dal programma. Per ulteriori informazioni, vedere /reference per C# e /reference (Visual Basic) per Visual Basic.

Per ulteriori informazioni sulla compilazione dalla riga di comando, vedere Compilazione dalla riga di comando con csc.exe e Compilazione dalla riga di comando (Visual Basic).

Vedere anche

Concetti

Guida per programmatori C#

Assembly e Global Assembly Cache (C# e Visual Basic)

Creazione di una classe che contenga le funzioni di DLL

Debug di progetti di DLL

Altre risorse

Guida per programmatori Visual Basic