ライブラリの基礎 - C Sharp DLL
ナビゲーションに移動
検索に移動
概要
ライブラリの明示的な読み込み
using System;
using System.Reflection;
class Program
{
static void Main()
{
// ライブラリを読み込む
// ライブラリ名だけを記述する場合、実行バイナリと同階層のディレクトリにライブラリが存在すること
Assembly assembly = Assembly.LoadFrom("<ライブラリ名 または ライブラリのパス>");
// クラスの完全修飾名(アセンブリ内のクラスの型)を取得
// <名前空間名>.<クラス名>
var sampleType = assembly.GetType("<名前空間名>.<クラス名>");
if (sampleType != null)
{
// 通常のクラスの場合
// 例: コンストラクタへ引数を渡す場合 --> var instance = Activator.CreateInstance(sampleType, <コンストラクタの引数 1>, <コンストラクタの引数 2>);
// ただし、Staticクラスの場合は不要
var instance = Activator.CreateInstance(sampleType);
// クラスのメソッド名を取得
var method = sampleType.GetMethod("<メソッド名>");
if (method != null)
{
// メソッドに引数がある場合
// 例: 引数がint, stringの2つ存在する場合 --> var args = new object[] { 5, "hoge" };
var args = new object[] { <引数1>, <引数2>, ... };
// メソッドを実行
// 例1: メソッドに引数が存在しない場合 --> var result = method.Invoke(instance, null);
// 例2: メソッドに引数と戻り値が存在しない場合 --> method.Invoke(instance, null);
var result = method.Invoke(instance, args);
// Staticクラスの場合、Invokeメソッドの第1引数はnullを指定する
var result = method.Invoke(null, args);
// 結果を表示する (戻り値がある場合)
Console.WriteLine("Result: " + result);
}
else
{
Console.WriteLine("Method not found.");
}
}
else
{
Console.WriteLine("Class not found.");
}
}
}
デバッグ方法
C# DLLのデバッグ方法を、以下に記載する。
- [ソリューションエクスプローラ]において、C# DLLプロジェクトを右クリックして[プロパティ]を選択する。
- [C# デバッグ プロパティ]画面が開くので、画面上部にある[構成]プルダウンから[デバッグ]を選択する。
- 画面左にある[デバッグ]を選択する。
- 画面右にある[開始動作]で次の手順を行う。
- .NET Framework DLLの場合、[外部プログラムを起動する]を選択して、呼び出し元の実行ファイルのフルパスを入力する。
- .NET Framework DLLでASP.NETの場合、[ブラウザーを開始時に使用するURL]を選択して、ローカルのASP.NETアプリのURLを入力する。
- .NET Core DLLの場合、[デバッグプロパティ]ページが異なる。
[起動]プルダウンから[実行可能ファイル]を選択して、[実行可能ファイル]項目に、呼び出し元の実行ファイルのフルパスを入力する。
- コマンドライン引数が必要な場合、[コマンドライン引数]項目または[アプリケーション引数]項目に、必要なコマンドライン引数を入力する。
- [ファイル] - [選択した項目を保存]ボタンを押下して、変更を保存する。(または、[Ctrl] + [S]キーを押下する)
C# DLLプロジェクトを右クリックして、[スタートアッププロジェクトに設定]を選択して、デバッグを開始する。
デバッグでブレークポイントがヒットしない場合、自身のDLL出力(初期設定では、<project>\Debugディレクトリ)が、
呼び出し元の実行ファイルで呼び出されている場所であることを確認する。
リモートデバッグ方法
別のPCに配置されているC#プロジェクトをデバッグするには、C#プロジェクトを配置したPCにリモートツールをインストールおよび実行して、
Visual StudioからリモートPCに接続するようにプロジェクトを構成する。
リモートデバッガは、Windows 7以降(Phoneを除く)およびWindows Server 2008 SP2以降でサポートされている。
※注意
プロキシ経由で接続された2台のPC間のデバッグはサポートされていない。
待機時間の長い接続や低帯域幅の接続(ダイヤルアップ等)や国をまたぐインターネット経由のデバッグは推奨されない。
これらは、障害が発生したり、過度に低速になる可能性がある。
まず、リモートツールのダウンロードおよびインストールする。
リモートPCにおいて、以下のリンクから使用しているVisual Studioのバージョン用のリモートツールを選択する。
(リモートPCと同じアーキテクチャを持つリモートツールを選択すること)
例えば、Windows x64を実行しているリモートPCにおいて、x86のソフトウェアをデバッグする場合、x64のリモートツールをインストールする。
- Visual Studio 2019
- リモートツール
- 全てのバージョンのVisual Studio 2019と互換性がある。
- x86、x64、ARM64に一致するバージョンをダウンロードする。
- Windows Serverの場合、リモートツールのダウンロードについては、ファイルのダウンロードのブロック解除に関するページを参照すること。
- Visual Studio 2017
- リモートツール
- 全てのバージョンのVisual Studio 2017と互換性がある。
- (x86、x64、ARM64に一致するバージョンをダウンロードする。
- Windows Serverの場合、リモートツールのダウンロードについては、ファイルのダウンロードのブロック解除に関するページを参照すること。
- Visual Studio 2015
- リモートツール
- Visual Studio 2015のリモートツールは、My.VisualStudio.com で入手できる。
- Visual Studio Dev Essentialsプログラム(無料)に参加するか、または、Visual StudioサブスクリプションIDでサインインする。
- Windows Serverの場合、リモートツールのダウンロードについては、ファイルのダウンロードのブロック解除に関するページを参照すること。
リモートデバッガの設定方法を、以下に記載する。
- リモートPC上の[スタート]メニューから[リモートデバッガー]を起動する。
- リモートPCに対する管理アクセス許可が無い場合、リモートデバッグを行う実行ファイル等を右クリックして、[管理者として実行]を選択する。
それ以外の場合、通常通り開始する。
また、管理者として実行されているプロセスまたは別のユーザ(IIS等)で実行されているプロセスにアタッチする場合、
リモートデバッグする実行ファイル等を右クリックして、[管理者として実行]を選択する。
詳細については、Visual Studioのドキュメントを参照すること。 - リモートデバッガを構成する前にリモートデバッガを開始すると、[リモート デバッグの構成]画面が開く。
- Windows Web Services APIがインストールされていない場合((Windows Server 2008 R2のみ)、[インストール]ボタンを押下する。
- リモートツールを使用するネットワークの種類を少なくとも1つ選択する。
PCがドメインを介して接続されている場合、最初の項目を選択する必要がある。
PCがワークグループまたはホームグループを介して接続されている場合、必要に応じて、2番目または3番目の項目を選択する。 - [リモート デバッグの構成]を選択して、ファイアウォールを構成して、リモートデバッガを起動する。
- リモートデバッガの構成が完了すると、[リモート デバッガー]画面が開く。
- リモートデバッガは接続を待機するので、表示されているサーバ名とポート番号を使用して、Visual Studioでリモート接続構成を設定する。
- リモートデバッガを停止する方法は、[ファイル] - [終了]を選択する。
リモートデバッガを再起動するには、[スタート]メニューまたはコマンド ラインから以下のコマンドを実行する。<リモートデバッガのインストールディレクトリ>\msvsmon.exe