方法: コマンド ラインを使用してアセンブリを作成および使用する (C# および Visual Basic)

アセンブリまたはダイナミック リンク ライブラリ (DLL) は、実行時にプログラムにリンクされます。 DLL のビルド例、使用例として、次に示すシナリオを考えてみます。

  • MathLibrary.DLL: 実行時に呼び出されるメソッドが収められているライブラリ ファイルです。 この例では、DLL には 2 つのメソッド Add と Multiply が含まれています。

  • Add: メソッド Add が入っているソース ファイルです。 このメソッドは、パラメーターの和を返します。 メソッド Add を含むクラス AddClass は、名前空間 UtilityMethods のメンバーです。

  • Mult: メソッド Multiply のソース コードです。 このメソッドは、パラメーターの積を返します。 メソッド Multiply を含むクラス MultiplyClass も、名前空間 UtilityMethods のメンバーです。

  • TestCode: Main メソッドを含むファイルです。 DLL ファイルのメソッドを使って、実行時引数の和と積を計算します。

使用例

' 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        
*/

このファイルには、DLL のメソッド Add と Multiply を使用するアルゴリズムが入っています。 最初に、コマンド ラインから入力された引数 num1 と num2 を解析します。 次に、AddClass クラスの Add メソッドを使って和を計算し、MultiplyClass クラスの Multiply メソッドを使って積を計算します。

ファイルの先頭で using ディレクティブ (Visual Basic では Imports) を指定すると、コンパイル時に非修飾クラス名を使って DLL メソッドを参照できます。次はその例です。

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

ディレクティブを指定しない場合は、完全修飾名を使用する必要があります。次はその例です。

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

実行

プログラムを実行するには、EXE ファイルの名前に続けて 2 つの数値を入力します。次はその例です。

TestCode 1234 5678

コードのコンパイル

MathLibrary.DLL ファイルをビルドするには、次のコマンド ラインを使って Add と Mult をコンパイルします。

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

/target:library コンパイラ オプションを指定すると、コンパイラは EXE ファイルではなく DLL ファイルを出力します。 /out コンパイラ オプションで指定されたファイル名が、DLL のファイル名になります。 このオプションを指定しないと、コンパイラは最初のファイル名 (Add.cs) を DLL の名前として使います。

実行可能ファイル TestCode.exe を作成するには、次のコマンド ラインを使用します。

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

ここでの /out コンパイラ オプションでは、EXE ファイルを出力するようにコンパイラに指示し、出力ファイルの名前 (TestCode.exe) を指定しています。 このコンパイラ オプションは省略できます。 /reference コンパイラ オプションは、このプログラムが使用する DLL ファイルを指定します。 詳細については、「/reference」(C# の場合) および「/reference (Visual Basic)」(Visual Basic の場合) を参照してください。

コマンド ラインからのビルドの詳細については、「csc.exe を使用したコマンド ラインからのビルド」および「コマンド ラインからのビルド (Visual Basic)」を参照してください。

参照

概念

C# プログラミング ガイド

アセンブリとグローバル アセンブリ キャッシュ (C# および Visual Basic)

DLL 関数を保持するクラスの作成

DLL プロジェクトのデバッグ

その他の技術情報

Visual Basic のプログラミング ガイド