csc コマンドを使用して .cs ファイルを .dll にコンパイルするプロセス
多くの場合、.cs ファイルを個別に .dll ファイルにコンパイルする必要があります。その操作は次のとおりです。
コマンド ウィンドウを開く -> コンソールに「cmd」と入力 -> cd C:WINDOWSMicrosoft.NETFrameworkv1.1.4322
vs.net がインストールされているディレクトリに移動します -> csc コマンド csc /target:library File.cs を実行します -> ディレクトリ内に対応する名前の .dll ファイルを生成します (前提条件: .cs ファイルを C: に置きます) WINDOWS Microsoft.NETFrameworkv1.1.4322 ディレクトリ)
csc コマンドの使用方法は多数あります。以下を参照してください。
File.cs を変換して File.exe を生成する
csc File.cs は File.cs をコンパイルして File.dll を生成します
csc /target:library File.cs File.cs をコンパイルし、My.exe を作成します
csc /out:My.exe File.cs 最適化と DEBUG シンボルの定義を使用して、現在のディレクトリ内のすべての C# ファイルをコンパイルします。出力は File2.exe です
csc /define:DEBUG /optimize /out:File2.exe *.cs 現在のディレクトリ内のすべての C# ファイルをコンパイルして、File2.dll のデバッグ バージョンを生成します。ロゴや警告を表示しないでください
csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs 現在のディレクトリ内のすべての C# ファイルを Something.xyz (DLL) にコンパイルします
csc /target:library /out:Something.xyz *.cs File.cs をコンパイルして File.dll を生成する
csc /target:library File.cs は最も一般的に使用されるコマンドです。実際、これを単に csc /t:library File.cs と記述することもできます。csc /out:mycodebehind.dll /t:library となります。 mycodebehind.cs では、出力ファイル名を自分で指定できます。
csc /out:mycodebehind.dll /t:library mycodebehind.cs mycodebehind2.cs、この機能は 2 つの cs ファイルを 1 つの .dll ファイルにインストールすることです。
例(インターネットから抜粋)
1. ダイナミックリンクライブラリ
ダイナミックリンクライブラリとは何ですか? DLL という 3 文字は、Dynamic Link Library の略称であり、共有関数ライブラリである実行可能ファイルです。動的リンクは、プロセスがその実行可能コードの一部ではない関数を呼び出す方法を提供します。関数の実行可能コードは、それを使用するプロセスとは別にコンパイル、リンク、および保存された 1 つ以上の関数を含む DLL 内にあります。 DLL は、データとリソースの共有にも役立ちます。複数のアプリケーションは、メモリ内の DLL の単一コピーの内容に同時にアクセスできます。
ほとんどのプログラマーと同様に、あなたも DLL を頻繁に使用したことがあるはずです。プログラミングやコーディングで大きな間違いを引き起こすと感じたことはありますか? 今日は、C# で DLL (ダイナミック リンク ライブラリ) を作成して呼び出す方法について説明したいと思います。ソフトウェア設計者として、アプリケーションをより柔軟に整理して作成できるようになり、これに基づいて高いコード再利用効果を実現できます。 C#でDLLを作成して呼び出す方法を紹介します。
2. 準備作業
次に行うことについて簡単に説明する必要があります。この記事では、C# 言語を使用して MyDLL.DLL という名前のダイナミック リンク ライブラリを作成します。このダイナミック リンク ライブラリ ファイルには 2 つの関数があります。 2 つのパラメータの値を交換するもう 1 つの機能は、2 つのパラメータの最大公約数を見つけることです。次に、この DLL を使用するアプリケーションを作成します。実行して結果を出力します。
3. DLLの作成
次の 3 つの C# コード ファイルを作成してみましょう。
1.MySwap.cs
}
システムを使用する;
名前空間 MyMethods
{
パブリック クラス SwapClass
{
public static bool Swap(ref long i,ref long j)
{
i = i+j;
j = ij;
i = ij;
true を返します。
}
}
}
2.MyMaxCD.cs
システムを使用する;
名前空間 MyMethods
{
パブリック クラス MaxCDClass
{
パブリック静的long MaxCD(long i, long j)
{
長い a、b、温度;
if(i>j)
{
a = 私;
b = j;
}
それ以外
{
b = i;
a = j;
}
温度 = a % b;
while(温度!=0)
{
a = b;
b = 温度;
温度 = a % b;
}
bを返します。
}
}
}
これら 2 つのファイルを作成するときは、Visual Studio.NET または他のテキスト エディタ (メモ帳も含む) を使用できることに注意してください。これら 2 つのファイルは同じファイル内にありませんが、同じ名前空間に属しているため、将来これら 2 つの方法を使用するのが便利になります。もちろん、それらは異なる名前空間に属することもでき、それはまったく問題ありませんが、適用するときに 2 つの異なる名前空間を参照するだけでよいため、作成者は 1 つの名前空間の下に記述することをお勧めします。
次のタスクは、これら 2 つの cs ファイルを必要な DLL ファイルに変換することです。その方法は次のとおりです。 Microsoft.NET Framework がインストールされているオペレーティング システムでは、Windows が配置されているディレクトリ内で Microsoft.NET ディレクトリを見つけることができます。 C# コンパイラは、このディレクトリの下に提供されます。CSC.EXE を実行します。 csc /target:library /out:MyDLL.DLL MySwap.cs MyMaxCD.cs 完了後、このディレクトリの下に生成した MyDLL.DLL ファイルが見つかります。 /target:library コンパイラ オプションは、EXE ファイルではなく DLL ファイルを出力するようにコンパイラに指示します。 /out コンパイラ オプションに続いてファイル名を指定すると、DLL ファイル名が指定されます。 /out の後にファイル名が続かない場合、コンパイラは最初のファイル (MySwap.cs) を DLL ファイル名として使用します。生成されるファイルは MySwap.DLL ファイルです。
OK! ダイナミック リンク ライブラリ ファイルの作成作業は完了しました。次は、作成したダイナミック リンク ライブラリ ファイルの使用方法を紹介します。 4. DLL の使用 先ほど作成した 2 つのメソッドが正しいかどうかをテストするための小さなプログラムを作成します。
MyClient.cs
システムを使用する;
using MyMethods; //ここでは、先ほど定義した名前空間を参照します。先ほどの 2 つのファイルを 2 つの異なる名前空間に書き込むとします。
クラスMyClient
{
public static void Main(string[] args)
{
if (args.Length != 2)
{
Console.WriteLine("使用法: MyClient <num1> <num2>");
戻る;
}
long num1 = long.Parse(args[0]);
long num2 = long.Parse(args[1]);
SwapClass.Swap(ref num1,ref num2);
// ファイルの先頭にある using ディレクティブを使用すると、コンパイル時に修飾されていないクラス名を使用して DLL メソッドを参照できることに注意してください。
Console.WriteLine("スワップの結果は、num1 = {0} および num2 ={1} です",num1, num2);
long maxcd = MaxCDClass.MaxCD(num1,num2);
Console.WriteLine("{0} と {1} の MaxCD は {2} です",num1, num2, maxcd);
}
}
実行可能ファイル MyClient.exe を生成するには、次のコマンド ラインを使用します。
csc /out:MyClient.exe /reference:MyDLL.DLL MyClient.cs
/out コンパイラ オプションは、EXE ファイルを出力するようにコンパイラに指示し、出力ファイル名 (MyClient.exe) を指定します。 /reference コンパイラ オプションは、プログラムが参照する DLL ファイルを指定します。
5. 実行
プログラムを実行するには、EXE ファイルの名前の後に 2 つの数字を入力します。例: MyClient 123 456
6. 出力
スワップの結果は、num1 = 456、num2 = 123 となります。
456 と 123 の最大 CD は 3 です
7. まとめ
動的リンクには次の利点があります。
1. メモリを節約し、スワップ操作を減らします。多くのプロセスが DLL を同時に使用して、メモリ内の DLL のコピーを共有できます。代わりに、静的にリンクされたライブラリを使用して構築されたアプリケーションごとに、Windows はライブラリ コードのコピーをメモリにロードする必要があります。
2. ディスク容量を節約します。多くのアプリケーションは、ディスク上の DLL のコピーを共有できます。代わりに、静的にリンクされたライブラリを使用して構築された各アプリケーションには、別個のコピーとして実行可能イメージにリンクされたライブラリ コードがあります。 3. DLL へのアップグレードが簡単になります。 DLL 内の関数が変更された場合、関数のパラメーターと戻り値が変更されない限り、それらを使用するアプリケーションを再コンパイルまたは再リンクする必要はありません。対照的に、静的にリンクされたオブジェクト コードでは、関数が変更されたときにアプリケーションを再リンクする必要があります。
4. アフターサポートを提供します。たとえば、アプリケーションの最初の出荷時には使用できないモニターをサポートするようにモニター ドライバー DLL を変更できます。
5. 多言語プログラムをサポートします。プログラムが関数の呼び出し規約に従っている限り、異なるプログラミング言語で書かれたプログラムでも同じ DLL 関数を呼び出すことができます。プログラムと DLL 関数は、関数がその引数がスタックにプッシュされることを期待する順序、関数またはアプリケーションがスタックのクリアを担当するかどうか、引数がレジスタに渡されるかどうかなどの点で互換性がある必要があります。
6. MFC ライブラリ クラスを拡張するためのメカニズムを提供します。既存の MFC クラスからクラスを派生し、MFC アプリケーションで使用できるように MFC 拡張 DLL に配置できます。
7. 国際バージョンの作成を簡単にします。リソースを DLL に配置すると、アプリケーションの国際バージョンの作成がはるかに簡単になります。アプリケーションの各言語バージョンの文字列を個別の DLL リソース ファイルに配置し、異なる言語バージョンに適切なリソースをロードさせることができます。
DLL を使用する場合の潜在的な欠点の 1 つは、アプリケーションが自己完結型ではなく、別の DLL モジュールの存在に依存することです。