📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の4版が非表示) | |||
| 3行目: | 3行目: | ||
<br><br> | <br><br> | ||
== | == ライブラリの読み込み == | ||
==== ライブラリの作成 ==== | |||
* Rider | |||
*# [新規ソリューション]ボタンを押下する。 | |||
*# [新規ソリューション]画面が開くので、[.NET / .NET Core]の[クラスライブラリ]、または、[.NET Framework]の[クラスライブラリ]を選択する。 | |||
*# ソリューション名、プロジェクト名、他の設定項目を入力して、[作成]ボタンを押下する。 | |||
*: <br> | |||
* Visual Studio | |||
*# [ファイル]メニューバー - [新規作成] - [プロジェクト]を選択する。 | |||
*# [新しいプロジェクト]画面にて、[クラスライブラリ(.NET Standard)]、または、[クラスライブラリ(.NET Framework)]を選択する。 | |||
*# ソリューション名を入力して、[OK]ボタンを押下する。 | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
// クラスライブラリ | |||
namespace SampleLibrary | |||
{ | |||
public class SampleClass | |||
{ | |||
public int SampleMethod(int i, int j) => i + j; | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== ライブラリの暗黙的な読み込み ==== | |||
* Rider | |||
*# 画面左ペインにある[ソリューション]からプロジェクト名を右クリックして、[追加] - [参照...]を選択する。 | |||
*# [参照の追加]画面が開くので、[追加(A)...]ボタンを押下して、追加するライブラリファイルを選択する。 | |||
*# [OK]ボタンを押下する。 | |||
*# 画面左ペインにある[ソリューション]を展開して、<プロジェクト名> - <依存関係> - <.NET バージョン> - <アセンブリ>内にライブラリファイル名が追加される。 | |||
*: <br> | |||
* Visual Studio | |||
*# [ソリューションエクスプローラー] - [参照]を右クリックして、コンテキストメニューから[参照の追加]を選択する。 | |||
*# [参照マネージャー]画面が開くので、[参照]ボタンを押下して、追加するライブラリファイルを選択する。 | |||
*# [参照マネージャー]画面の[参照]にライブラリファイル名が追加される。 | |||
*# [OK]ボタンを押下する。 | |||
<br> | |||
<syntaxhighlight lang="c#"> | <syntaxhighlight lang="c#"> | ||
using <ライブラリの名前空間名 例: SampleLibrary>; | |||
// クラスライブラリのオブジェクトを生成 | |||
// ただし、Staticクラスの場合は生成は不要 | |||
var sampleClass = new <ライブラリのクラス名 例: SampleClass>(); | |||
// クラスライブラリのメソッドを実行 | |||
// <ライブラリのクラス名>.<メソッド名>(引数 1, 引数 2, ...); | |||
sampleClass.SampleMethod(); | |||
</syntaxhighlight> | |||
<br> | |||
==== ライブラリの明示的な読み込み ==== | |||
ライブラリの明示的な読み込みは、プラグインを設計する場合等に便利である。<br> | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
// ファイル名を使用する場合 | |||
using System; | using System; | ||
using System.Reflection; | using System.Reflection; | ||
| 12行目: | 66行目: | ||
static void Main() | static void Main() | ||
{ | { | ||
// | // アセンブリのファイル名を指定してアセンブリを読み込む | ||
// | // ライブラリ名のみを記述する場合、実行バイナリと同階層のディレクトリにライブラリが存在すること | ||
var assembly = Assembly.LoadFrom("<ライブラリ名 または ライブラリのパス>"); | |||
// モジュールを取得する | |||
var module = assembly.GetModule("<ライブラリ名>"); | |||
// クラスの完全修飾名(アセンブリ内のクラスの型)を取得 | // クラスの完全修飾名(アセンブリ内のクラスの型)を取得 | ||
// <名前空間名>.<クラス名> | // <名前空間名>.<クラス名> | ||
var sampleType = assembly.GetType("<名前空間名>.<クラス名>"); | // 上記のサンプルライブラリの場合 --> var sampleType = assembly.GetType("SampleLibrary.SampleClass"); | ||
var sampleType = module.GetType("<名前空間名>.<クラス名>"); | |||
if (sampleType != null) | if (sampleType != null) | ||
{ | { | ||
// 通常のクラスの場合 | // 通常のクラスの場合 | ||
// 例: コンストラクタへ引数を渡す場合 --> var instance = Activator.CreateInstance(sampleType, <コンストラクタの引数 1>, <コンストラクタの引数 2>); | // 例: コンストラクタへ引数を渡す場合 --> var instance = Activator.CreateInstance(sampleType, <コンストラクタの引数 1>, <コンストラクタの引数 2>, ...); | ||
// 上記のサンプルライブラリの場合 --> var instance = Activator.CreateInstance(sampleType); | |||
// ただし、Staticクラスの場合は不要 | // ただし、Staticクラスの場合は不要 | ||
var instance = Activator.CreateInstance(sampleType); | var instance = Activator.CreateInstance(sampleType); | ||
// クラスのメソッド名を取得 | // クラスのメソッド名を取得 | ||
// 上記のサンプルライブラリの場合 --> var method = sampleType.GetMethod("SampleMethod"); | |||
var method = sampleType.GetMethod("<メソッド名>"); | var method = sampleType.GetMethod("<メソッド名>"); | ||
| 34行目: | 94行目: | ||
// メソッドに引数がある場合 | // メソッドに引数がある場合 | ||
// 例: 引数がint, stringの2つ存在する場合 --> var args = new object[] { 5, "hoge" }; | // 例: 引数がint, stringの2つ存在する場合 --> var args = new object[] { 5, "hoge" }; | ||
// 上記のサンプルライブラリの場合 --> var args = new object[] { 10, 20 }; | |||
var args = new object[] { <引数1>, <引数2>, ... }; | var args = new object[] { <引数1>, <引数2>, ... }; | ||
| 42行目: | 103行目: | ||
// Staticクラスの場合、Invokeメソッドの第1引数はnullを指定する | // Staticクラスの場合、Invokeメソッドの第1引数はnullを指定する | ||
// 例1: メソッドに引数が存在しない場合 --> var result = method.Invoke(null, null); | |||
// 例2: メソッドに引数と戻り値が存在しない場合 --> method.Invoke(null, null); | |||
var result = method.Invoke(null, args); | var result = method.Invoke(null, args); | ||
| 57行目: | 120行目: | ||
} | } | ||
} | } | ||
} | } | ||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
// アセンブリ名を使用する場合 | |||
using System; | |||
using System.Reflection; | |||
class Program | |||
{ | |||
static void Main() | |||
{ | |||
// アセンブリのファイル名を指定してアセンブリを読み込む | |||
// ライブラリ名のみを記述する場合、実行バイナリと同階層のディレクトリにライブラリが存在すること | |||
// 上記のサンプルライブラリの場合 --> var assembly = Assembly.Load("SampleLibrary"); | |||
var assembly = Assembly.Load("<アセンブリ名>"); | |||
// クラスの完全修飾名(アセンブリ内のクラスの型)を取得 | |||
// <名前空間名>.<クラス名> | |||
// 上記のサンプルライブラリの場合 --> var sampleType = assembly.GetType("SampleLibrary.SampleClass"); | |||
var sampleType = module.GetType("<名前空間名>.<クラス名>"); | |||
// クラスのメソッド名を取得 | |||
// 上記のサンプルライブラリの場合 --> var method = sampleType.GetMethod("SampleMethod"); | |||
var method = sampleType.GetMethod("<メソッド名>"); | |||
// 通常のクラスの場合 | |||
// 例: コンストラクタへ引数を渡す場合 --> var instance = Activator.CreateInstance(sampleType, <コンストラクタの引数 1>, <コンストラクタの引数 2>, ...); | |||
// 上記のサンプルライブラリの場合 --> var instance = Activator.CreateInstance(sampleType); | |||
// ただし、Staticクラスの場合は不要 | |||
var instance = Activator.CreateInstance(sampleType); | |||
// メソッドに引数がある場合 | |||
// 例: 引数がint, stringの2つ存在する場合 --> var args = new object[] { 5, "hoge" }; | |||
// 上記のサンプルライブラリの場合 --> var args = new object[] { 10, 20 }; | |||
var args = new object[] { <引数1>, <引数2>, ... }; | |||
// メソッドを実行 | |||
// 例1: メソッドに引数が存在しない場合 --> var result = method.Invoke(instance, null); | |||
// 例2: メソッドに引数と戻り値が存在しない場合 --> method.Invoke(instance, null); | |||
var result = method.Invoke(instance, args); | |||
} | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
== デバッグ方法 == | == デバッグ方法 == | ||
C# | C#ライブラリのデバッグ方法を、以下に記載する。<br> | ||
<br> | <br> | ||
# [ | * Rider | ||
# [C# デバッグ プロパティ]画面が開くので、画面上部にある[構成]プルダウンから[デバッグ]を選択する。 | *: 外部コードのデバッグは初期状態で有効化されている。<br>もし、デバッガにライブラリコードを無視させる場合は、以下に示す手順に従う。 | ||
# 画面左にある[デバッグ]を選択する。 | *# 外部コードのデバッグを無効にするには、[ファイル]メニューバー - [設定] - 設定画面の左ペインにある[ビルド、実行、デプロイ] - [デバッガー]を選択する。 | ||
# 画面右にある[開始動作]で次の手順を行う。 | *# 設定画面の右ペインにある[外部ソースのデバッグを可能にする]チェックボックスのチェックを外す。 | ||
#* .NET | *#: <br> | ||
#* .NET | *: ただし、このオプションを無効にしても、外部コードに移動してブレークポイントのみを設定することはできる。 | ||
#* .NET | *: しかし、外部コードのブレークポイントはデバッガによって無視されて、外部コードに入ることはできなくなる。 | ||
# コマンドライン引数が必要な場合、[コマンドライン引数]項目または[アプリケーション引数]項目に、必要なコマンドライン引数を入力する。 | *: <br> | ||
# [ファイル] - [選択した項目を保存]ボタンを押下して、変更を保存する。(または、[Ctrl] + [S]キーを押下する) | * Visual Studio | ||
*# [ソリューションエクスプローラー]において、C#ライブラリプロジェクトを右クリックして[プロパティ]を選択する。 | |||
*# [C# デバッグ プロパティ]画面が開くので、画面上部にある[構成]プルダウンから[デバッグ]を選択する。 | |||
*# 画面左にある[デバッグ]を選択する。 | |||
*# 画面右にある[開始動作]で次の手順を行う。 | |||
*#* .NET Frameworkの場合、[外部プログラムを起動する]を選択して、呼び出し元の実行ファイルのフルパスを入力する。 | |||
*#* .NET FrameworkでASP.NETの場合、[ブラウザーを開始時に使用するURL]を選択して、ローカルのASP.NETアプリのURLを入力する。 | |||
*#* .NET / .NET Coreの場合、[デバッグプロパティ]ページが異なる。<br>[起動]プルダウンから[実行可能ファイル]を選択して、[実行可能ファイル]項目に、呼び出し元の実行ファイルのフルパスを入力する。 | |||
*#: <br> | |||
*# コマンドライン引数が必要な場合、[コマンドライン引数]項目または[アプリケーション引数]項目に、必要なコマンドライン引数を入力する。 | |||
*# [ファイル] - [選択した項目を保存]ボタンを押下して、変更を保存する。(または、[Ctrl] + [S]キーを押下する) | |||
<br> | <br> | ||
C# | C#ライブラリプロジェクトを右クリックして、[スタートアッププロジェクトに設定]を選択して、デバッグを開始する。<br> | ||
デバッグでブレークポイントがヒットしない場合、自身のDLL出力(初期設定では、<project>\Debugディレクトリ)が、<br> | デバッグでブレークポイントがヒットしない場合、自身のDLL出力(初期設定では、<project>\Debugディレクトリ)が、<br> | ||
呼び出し元の実行ファイルで呼び出されている場所であることを確認する。<br> | 呼び出し元の実行ファイルで呼び出されている場所であることを確認する。<br> | ||