C#クラスライブラリの作り方入門|作成手順から参照・使い方まで解説

はじめに

C#でアプリケーションを作っていると、複数のプロジェクトで同じ処理を使い回したい場面がよくあります。たとえば、文字列の整形、日付計算、消費税計算、入力チェック、ファイル操作、データ変換などは、コンソールアプリ、Windowsアプリ、Webアプリのどれでも利用する可能性があります。

このような共通処理をまとめておくために使われるのが、C#のクラスライブラリです。クラスライブラリを作成しておくと、必要な機能を部品のように別プロジェクトから参照して利用できます。

この記事では、C#クラスライブラリの基本から、Visual Studioでの作成手順、参照方法、DLLとして使う方法、よくあるエラー、設計のポイントまで初心者向けに解説します。

1. C#クラスライブラリとは

1-1. クラスライブラリの概要と役割

C#のクラスライブラリとは、クラスやメソッド、プロパティなどをまとめて作成するためのプロジェクトです。通常のアプリケーションのように単体で画面を表示したり、直接実行したりするものではなく、ほかのアプリケーションから呼び出される部品として使います。

たとえば、次のような処理をクラスライブラリにまとめられます。

C#
namespace SampleLibrary
{
public class TaxCalculator
{
public decimal AddTax(decimal price, decimal taxRate)
{
return price * (1 + taxRate);
}
}
}

このように作成したクラスを、別のコンソールアプリやWebアプリから呼び出して利用できます。

クラスライブラリの役割は、アプリケーション内の共通機能を独立した形で管理し、再利用しやすくすることです。

1-2. DLLファイルとの関係

C#のクラスライブラリをビルドすると、多くの場合DLLファイルが生成されます。DLLは「Dynamic Link Library」の略で、実行時に別のプログラムから読み込まれるライブラリファイルです。

たとえば、クラスライブラリのプロジェクト名が「SampleLibrary」の場合、ビルド後に次のようなファイルが作成されます。

SampleLibrary.dll

このDLLファイルの中には、作成したクラスやメソッドの情報が含まれています。呼び出し側のアプリケーションは、このDLLを参照することで、クラスライブラリ内の機能を利用できます。

つまり、C#クラスライブラリはソースコードを管理するプロジェクトであり、ビルド結果としてDLLファイルが生成される、という関係です。

1-3. コンソールアプリやWebアプリとの違い

C#には、コンソールアプリ、Windows Formsアプリ、WPFアプリ、ASP.NET Core Webアプリ、クラスライブラリなど、さまざまなプロジェクト種類があります。

コンソールアプリは、Mainメソッドを起点として単体で実行できます。Webアプリは、ブラウザからアクセスされるアプリケーションとして動作します。一方、クラスライブラリは単体で実行するための入口を持ちません。

主な違いは次のとおりです。

種類単体実行主な用途
コンソールアプリできるコマンドラインで動くアプリ
WebアプリできるWebサイトやWeb API
Windowsアプリできるデスクトップアプリ
クラスライブラリ基本的にできない共通処理や部品の提供

クラスライブラリは、あくまでほかのアプリケーションから使われるためのプロジェクトです。

1-4. クラスライブラリを使うメリット

C#でクラスライブラリを使う大きなメリットは、処理を再利用しやすくなることです。同じコードを複数のプロジェクトにコピーして使うと、修正が必要になったときにすべての場所を変更しなければなりません。

クラスライブラリに共通処理をまとめておけば、ライブラリ側を修正するだけで、参照しているプロジェクトでも更新内容を利用できます。

また、処理を分離することで、アプリケーション全体の見通しがよくなります。画面表示の処理、データベースの処理、計算処理、入力チェックなどを適切に分けることで、保守しやすい構成になります。

さらに、単体テストもしやすくなります。クラスライブラリに業務ロジックをまとめておけば、画面や外部環境に依存しない形でテストできます。

2. C#クラスライブラリを作る前に準備するもの

2-1. Visual Studioのインストール

C#クラスライブラリを作成するには、Visual Studioを使うのが一般的です。Visual Studioには、プロジェクト作成、コード編集、ビルド、デバッグ、参照設定など、C#開発に必要な機能がそろっています。

インストール時には、C#開発に必要なワークロードを選択します。たとえば、コンソールアプリやクラスライブラリを作る場合は「.NET デスクトップ開発」を選択しておくとよいでしょう。

ASP.NET CoreのWebアプリからクラスライブラリを使いたい場合は、「ASP.NET と Web 開発」も選択しておくと便利です。

2-2. .NET SDKの確認

C#でクラスライブラリを作成するには、.NET SDKが必要です。Visual Studioをインストールすると一緒に入ることが多いですが、コマンドラインで確認することもできます。

コマンドプロンプトやターミナルで次のコマンドを実行します。

Bash
dotnet --version

バージョン番号が表示されれば、.NET SDKが利用できる状態です。

また、インストールされているSDK一覧を確認したい場合は、次のコマンドを使います。

Bash
dotnet --list-sdks

Visual Studioだけで作業する場合でも、.NET SDKが正しく入っているか確認しておくと安心です。

2-3. 使用するプロジェクトテンプレートの選び方

Visual Studioでクラスライブラリを作成するときは、プロジェクトテンプレートを選択します。代表的なテンプレートには、次のようなものがあります。

テンプレート用途
クラス ライブラリ現在の.NET向けライブラリを作成
クラス ライブラリ (.NET Framework).NET Framework向けライブラリを作成
Razor クラス ライブラリASP.NET Coreの画面部品などを作成

初心者がC#クラスライブラリを作る場合は、基本的には「クラス ライブラリ」を選ぶのがおすすめです。

既存の.NET Frameworkアプリから参照する必要がある場合は、「クラス ライブラリ (.NET Framework)」を選びます。どのアプリケーションから使うのかによって、テンプレートを選択することが重要です。

2-4. .NETと.NET Frameworkの違い

C#のクラスライブラリを作成するときに迷いやすいのが、.NETと.NET Frameworkの違いです。

.NET Frameworkは、主にWindows向けの従来型の開発基盤です。古いWindows Formsアプリや既存業務システムでは、.NET Frameworkが使われていることがあります。

一方、現在の.NETは、WindowsだけでなくLinuxやmacOSでも利用できる新しい開発基盤です。ASP.NET Core、コンソールアプリ、Web API、クラウド向けアプリなど、幅広い用途で使われます。

新しくC#クラスライブラリを作成する場合は、特別な理由がなければ現在の.NET向けに作成するとよいでしょう。ただし、既存システムが.NET Frameworkで作られている場合は、互換性を考えて.NET Framework向けのクラスライブラリを選ぶ必要があります。

3. C#クラスライブラリの作り方

3-1. Visual Studioで新しいプロジェクトを作成する

まず、Visual Studioを起動します。スタート画面が表示されたら、「新しいプロジェクトの作成」を選択します。

すでにソリューションを開いている場合は、メニューから次の操作を行います。

ファイル → 新規作成 → プロジェクト

または、既存のソリューションにクラスライブラリを追加したい場合は、ソリューションエクスプローラーでソリューションを右クリックし、次の操作を行います。

追加 → 新しいプロジェクト

この方法を使うと、アプリケーション本体とクラスライブラリを同じソリューション内で管理できます。

3-2. クラスライブラリテンプレートを選択する

プロジェクトテンプレートの検索画面で、「クラス ライブラリ」と入力します。候補の中から、目的に合ったクラスライブラリテンプレートを選択します。

新しい.NET向けに作る場合は「クラス ライブラリ」を選択します。既存の.NET Frameworkアプリから利用したい場合は「クラス ライブラリ (.NET Framework)」を選択します。

テンプレートを選んだら、「次へ」をクリックします。

3-3. プロジェクト名と保存場所を設定する

次に、プロジェクト名と保存場所を設定します。プロジェクト名は、ライブラリの役割が分かる名前にすると管理しやすくなります。

たとえば、次のような名前です。

CommonLibrary
UtilityLibrary
CalculationLibrary
MyApp.Core
MyApp.Services

初心者の場合は、まず「SampleLibrary」などの分かりやすい名前で作成しても問題ありません。

プロジェクト名は、既定の名前空間にも影響します。あとから変更することもできますが、最初から用途が分かる名前を付けておくとよいでしょう。

3-4. クラスファイルを追加・編集する

プロジェクトを作成すると、最初からClass1.csのようなクラスファイルが作成されている場合があります。このファイルを編集してもよいですが、実際の開発では役割が分かる名前に変更するのがおすすめです。

たとえば、税金計算を行うクラスであれば、TaxCalculator.csのようにします。

ソリューションエクスプローラーでプロジェクトを右クリックし、次の操作で新しいクラスを追加できます。

追加 → クラス

クラス名を入力して追加すると、新しいC#ファイルが作成されます。

3-5. メソッドやプロパティを作成する

クラスライブラリでは、外部から利用したいクラスやメソッドを作成します。別プロジェクトから呼び出すためには、基本的にpublicを付ける必要があります。

たとえば、価格に消費税を加算する処理を作る場合は、次のように記述します。

C#
namespace SampleLibrary
{
public class TaxCalculator
{
public decimal AddTax(decimal price, decimal taxRate)
{
return price * (1 + taxRate);
}
}
}

この例では、TaxCalculatorクラスとAddTaxメソッドの両方にpublicを付けています。これにより、別プロジェクトから呼び出せるようになります。

プロパティを持つクラスを作ることもできます。

C#
namespace SampleLibrary
{
public class Product
{
public string Name { get; set; } = string.Empty;
public decimal Price { get; set; }
}
}

クラスライブラリには、アプリケーションで共通して使いたいデータ構造や処理をまとめていきます。

3-6. クラスライブラリをビルドする

クラスやメソッドを作成したら、クラスライブラリをビルドします。Visual Studioでは、メニューから次の操作を行います。

ビルド → ソリューションのビルド

特定のプロジェクトだけをビルドしたい場合は、ソリューションエクスプローラーでクラスライブラリプロジェクトを右クリックし、「ビルド」を選択します。

ビルドが成功すると、binフォルダーの中にDLLファイルが生成されます。ビルドエラーが出た場合は、エラー一覧を確認し、構文ミスや参照設定の問題を修正します。

4. 作成したクラスライブラリの使い方

4-1. 呼び出し側プロジェクトを作成する

クラスライブラリを使うには、呼び出し側のプロジェクトが必要です。ここでは例として、コンソールアプリからクラスライブラリを呼び出すケースを考えます。

Visual Studioで新しいコンソールアプリを作成します。クラスライブラリと同じソリューション内に作成すると、参照設定が簡単です。

たとえば、次のような構成にします。

SampleSolution
├─ SampleLibrary
└─ SampleConsoleApp

SampleLibraryがクラスライブラリ、SampleConsoleAppが呼び出し側のコンソールアプリです。

4-2. プロジェクト参照を追加する

同じソリューション内にクラスライブラリと呼び出し側プロジェクトがある場合は、プロジェクト参照を追加します。

ソリューションエクスプローラーで、呼び出し側プロジェクトの「依存関係」または「参照」を右クリックし、「プロジェクト参照の追加」を選択します。

表示された一覧から、作成したクラスライブラリにチェックを入れてOKをクリックします。

これで、呼び出し側プロジェクトからクラスライブラリを利用できるようになります。

4-3. usingで名前空間を読み込む

参照を追加しただけでは、コード内でクラスを簡単に呼び出せない場合があります。クラスライブラリ側で定義した名前空間をusingで読み込む必要があります。

たとえば、クラスライブラリの名前空間がSampleLibraryの場合、呼び出し側のコードに次のように記述します。

C#
using SampleLibrary;

これにより、SampleLibrary名前空間にあるクラスを利用しやすくなります。

4-4. クラスやメソッドを呼び出す

usingを追加したら、クラスライブラリ内のクラスをインスタンス化してメソッドを呼び出します。

C#
using SampleLibrary;

var calculator = new TaxCalculator();

decimal price = 1000;
decimal taxRate = 0.10m;

decimal result = calculator.AddTax(price, taxRate);

Console.WriteLine(result);

このコードでは、クラスライブラリのTaxCalculatorクラスを使って、税込価格を計算しています。

実行結果は次のようになります。

1100.00

クラスライブラリ内の処理を呼び出し側プロジェクトから問題なく利用できていることが分かります。

4-5. 実行して動作確認する

最後に、呼び出し側プロジェクトをスタートアッププロジェクトに設定して実行します。ソリューションエクスプローラーでコンソールアプリを右クリックし、「スタートアッププロジェクトに設定」を選択します。

その後、Visual Studioの実行ボタンを押すか、F5キーで実行します。

クラスライブラリは単体では実行できないため、必ずコンソールアプリやWebアプリなどの呼び出し側プロジェクトから動作確認します。

5. DLLとして参照して使う方法

5-1. ビルド後に生成されるDLLの場所

C#クラスライブラリをビルドすると、DLLファイルが生成されます。一般的には、プロジェクトフォルダー内の次のような場所に出力されます。

bin\Debug\net8.0\SampleLibrary.dll

また、Releaseビルドの場合は次のようになります。

bin\Release\net8.0\SampleLibrary.dll

net8.0の部分は、使用しているターゲットフレームワークによって変わります。たとえば、.NET Frameworkの場合はnet48などになることがあります。

5-2. DLL参照を追加する手順

別のソリューションやプロジェクトからDLLを直接参照する場合は、DLL参照を追加します。

Visual Studioで呼び出し側プロジェクトを開き、「依存関係」または「参照」を右クリックして、「参照の追加」を選択します。

次に「参照」または「Browse」から、作成したDLLファイルを選択します。

SampleLibrary.dll

参照を追加したら、プロジェクト参照のときと同じように、必要な名前空間をusingで読み込みます。

C#
using SampleLibrary;

その後、クラスやメソッドを呼び出せます。

5-3. プロジェクト参照とDLL参照の違い

C#クラスライブラリを使う方法には、主にプロジェクト参照とDLL参照があります。

プロジェクト参照は、同じソリューション内のクラスライブラリプロジェクトを参照する方法です。ライブラリ側のコードを変更すると、ビルド時に自動的に反映されます。

DLL参照は、ビルド済みのDLLファイルを直接参照する方法です。別のソリューションや外部に配布されたライブラリを利用する場合に使います。

初心者が学習目的で使う場合は、まずプロジェクト参照がおすすめです。コードの修正と動作確認がしやすく、参照切れも起きにくいためです。

5-4. DLLを更新したときの注意点

DLL参照を使っている場合、クラスライブラリを修正して再ビルドしても、呼び出し側プロジェクトに自動反映されないことがあります。

その場合は、新しく生成されたDLLを参照先にコピーし直す必要があります。古いDLLを参照したままだと、修正したはずの処理が反映されないことがあります。

また、メソッド名やクラス名、引数の型を変更した場合、呼び出し側のコードでビルドエラーが発生する可能性があります。

DLLを更新するときは、呼び出し側プロジェクトとの互換性に注意しましょう。

6. クラスライブラリ作成時によくあるエラーと対処法

6-1. 参照を追加してもクラスが使えない

参照を追加したのにクラスが使えない場合は、まずクラスやメソッドにpublicが付いているか確認します。

次のようにpublicがないクラスは、外部プロジェクトから利用できません。

C#
class TaxCalculator
{
}

外部から使う場合は、次のようにします。

C#
public class TaxCalculator
{
}

また、呼び出し側で正しい名前空間をusingしているかも確認しましょう。

6-2. 名前空間が見つからない

「型または名前空間の名前が見つかりません」というエラーが出る場合は、参照設定またはusingの指定に問題があることが多いです。

確認するポイントは次のとおりです。

・クラスライブラリへの参照が追加されているか
・名前空間のスペルが正しいか
・クラス名のスペルが正しいか
・クラスがpublicになっているか
・クラスライブラリのビルドが成功しているか

特に、プロジェクト名と名前空間が異なる場合は注意が必要です。プロジェクト名がSampleLibraryでも、コード内の名前空間がMyLibraryになっていれば、using MyLibrary;と書く必要があります。

6-3. アクセス修飾子が原因で呼び出せない

C#では、クラスやメソッドにアクセス修飾子を指定できます。クラスライブラリを別プロジェクトから使う場合、外部に公開したいものにはpublicを付ける必要があります。

C#
public class MessageService
{
public string GetMessage()
{
return "Hello";
}

private string GetInternalMessage()
{
return "Internal";
}
}

この例では、GetMessageは外部から呼び出せますが、GetInternalMessageはクラス内部からしか呼び出せません。

すべてをpublicにすればよいわけではありません。外部から使わせたいものだけをpublicにし、内部処理はprivateにすることで、安全で分かりやすい設計になります。

6-4. ターゲットフレームワークが一致しない

呼び出し側プロジェクトとクラスライブラリのターゲットフレームワークが合っていないと、参照できない場合があります。

たとえば、.NET Frameworkの古いアプリから、現在の.NET向けに作成したクラスライブラリをそのまま参照できないことがあります。

この場合は、次の点を確認します。

・呼び出し側プロジェクトのターゲットフレームワーク
・クラスライブラリのターゲットフレームワーク
・互換性のある組み合わせになっているか

Visual Studioでは、プロジェクトを右クリックして「プロパティ」を開くと、ターゲットフレームワークを確認できます。

6-5. ビルドエラーが発生する

クラスライブラリのビルド時にエラーが出る場合は、エラー一覧を確認します。よくある原因には、構文ミス、必要な参照の不足、名前空間の間違い、型の不一致などがあります。

たとえば、メソッドの戻り値の型と実際に返している値が合っていない場合、ビルドエラーになります。

C#
public int GetName()
{
return "Taro";
}

このコードは、戻り値がintなのに文字列を返しているためエラーになります。

正しくは次のようにします。

C#
public string GetName()
{
return "Taro";
}

ビルドエラーは、エラーメッセージをよく読むことで原因を特定できることが多いです。

7. C#クラスライブラリを作るときの設計ポイント

7-1. publicとprivateを適切に使い分ける

クラスライブラリでは、外部に公開する部分と内部だけで使う部分を明確に分けることが重要です。

外部から使ってほしいクラスやメソッドにはpublicを付けます。一方、クラス内部だけで使う補助メソッドにはprivateを付けます。

C#
public class PriceService
{
public decimal GetTotalPrice(decimal price, decimal taxRate)
{
return AddTax(price, taxRate);
}

private decimal AddTax(decimal price, decimal taxRate)
{
return price * (1 + taxRate);
}
}

このようにすると、外部からはGetTotalPriceだけを使わせ、内部の細かい処理は隠せます。

公開範囲を適切に管理することで、誤った使い方を防ぎ、後から内部処理を変更しやすくなります。

7-2. 再利用しやすいクラス構成にする

クラスライブラリは、再利用されることを前提に作ります。そのため、特定の画面や特定のアプリに依存しすぎない設計にすることが大切です。

たとえば、計算処理の中で直接Console.WriteLineを使ってしまうと、コンソールアプリ以外では使いにくくなります。

C#
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}

このように、結果を表示するのではなく戻り値として返す設計にすると、コンソールアプリ、Webアプリ、テストコードなど、さまざまな場所で利用できます。

7-3. 処理ごとに責務を分ける

1つのクラスに多くの処理を詰め込みすぎると、使いにくく保守しづらいクラスライブラリになります。

たとえば、日付処理、文字列処理、金額計算、ファイル処理をすべてCommonHelperのような1つのクラスに入れると、役割が分かりにくくなります。

次のように、処理ごとにクラスを分けると管理しやすくなります。

DateService
StringFormatter
TaxCalculator
FileHelper

クラスごとの責務を明確にすることで、必要な機能を探しやすくなり、修正の影響範囲も小さくできます。

7-4. 命名規則を統一する

C#では、クラス名やメソッド名に分かりやすい名前を付けることが重要です。一般的に、クラス名やメソッド名はパスカルケースで書きます。

C#
public class UserService
{
public string GetUserName()
{
return "Taro";
}
}

変数名や引数名はキャメルケースで書くことが多いです。

C#
public decimal AddTax(decimal price, decimal taxRate)
{
return price * (1 + taxRate);
}

命名規則が統一されていると、コードの読みやすさが大きく向上します。

7-5. テストしやすい設計にする

クラスライブラリは、単体テストと相性がよいです。テストしやすい設計にするには、外部環境に依存しすぎないことが大切です。

たとえば、計算処理や文字列変換処理は、入力に対して結果が決まるためテストしやすい処理です。

C#
public class StringFormatter
{
public string ToUpperText(string text)
{
return text.ToUpper();
}
}

このような処理は、テストプロジェクトから呼び出して、期待した結果になるか確認できます。

クラスライブラリを作る段階でテストしやすさを意識しておくと、将来的な変更にも強いコードになります。

8. クラスライブラリをさらに活用する方法

8-1. 複数プロジェクトで共通処理を使い回す

C#クラスライブラリの代表的な活用方法は、複数プロジェクトで共通処理を使い回すことです。

たとえば、次のような構成が考えられます。

MyApp.Web
MyApp.Batch
MyApp.Desktop
MyApp.Common

MyApp.Commonをクラスライブラリとして作成し、Webアプリ、バッチ処理、デスクトップアプリから参照します。

入力チェック、ログ出力、日付処理、共通の計算処理などをまとめておくと、各プロジェクトで同じコードを何度も書かずに済みます。

8-2. NuGetパッケージ化して配布する

クラスライブラリは、NuGetパッケージとして配布することもできます。NuGetパッケージ化すると、ほかのプロジェクトからパッケージとして追加できるようになります。

社内で共通ライブラリを配布したり、複数のチームで同じライブラリを使ったりする場合に便利です。

NuGetパッケージ化することで、バージョン管理もしやすくなります。

MyLibrary 1.0.0
MyLibrary 1.1.0
MyLibrary 2.0.0

このようにバージョンを付けて管理すれば、どのプロジェクトがどのバージョンのライブラリを使っているのか分かりやすくなります。

8-3. 単体テストプロジェクトと組み合わせる

クラスライブラリを作成したら、単体テストプロジェクトと組み合わせるのもおすすめです。

たとえば、TaxCalculatorの動作をテストする場合は、次のようなテストを作成できます。

C#
using SampleLibrary;
using Xunit;

public class TaxCalculatorTests
{
[Fact]
public void AddTax_ReturnsPriceIncludingTax()
{
var calculator = new TaxCalculator();

var result = calculator.AddTax(1000, 0.10m);

Assert.Equal(1100, result);
}
}

単体テストを用意しておくと、クラスライブラリを修正したときに、既存の処理が壊れていないか確認できます。

8-4. Gitでバージョン管理する

クラスライブラリは、Gitでバージョン管理しておくと便利です。変更履歴を追跡できるため、いつ、どの処理を変更したのか確認できます。

また、チーム開発では、Gitを使うことで複数人が同じクラスライブラリを安全に編集できます。

クラスライブラリを別リポジトリとして管理する方法もあれば、アプリケーション本体と同じリポジトリで管理する方法もあります。小規模な開発では同じリポジトリで管理し、複数システムで共有する場合は別リポジトリにすることもあります。

9. C#クラスライブラリに関するよくある質問

9-1. クラスライブラリだけで実行できるのか

基本的に、C#のクラスライブラリだけでは実行できません。クラスライブラリには、コンソールアプリのような実行開始地点がないためです。

動作確認するには、コンソールアプリ、Webアプリ、単体テストプロジェクトなど、呼び出し側のプロジェクトを用意する必要があります。

9-2. DLLとEXEの違いは何か

DLLは、ほかのプログラムから読み込まれて使われるライブラリファイルです。一方、EXEは単体で実行できるアプリケーションファイルです。

クラスライブラリをビルドするとDLLが生成され、コンソールアプリやWindowsアプリをビルドするとEXEが生成されることが一般的です。

簡単に言えば、DLLは部品、EXEは実行する本体です。

9-3. 別のソリューションから参照できるのか

はい、別のソリューションからでも参照できます。その場合は、ビルド済みのDLLを参照する方法や、クラスライブラリプロジェクト自体をソリューションに追加してプロジェクト参照する方法があります。

学習や開発中は、プロジェクト参照のほうが修正を反映しやすく便利です。完成したライブラリを配布する場合は、DLL参照やNuGetパッケージ化を検討するとよいでしょう。

9-4. .NET Standardのクラスライブラリはいつ使うのか

.NET Standardは、複数の.NET環境で共通して使えるAPI仕様です。以前は、.NET Framework、.NET Core、Xamarinなど、複数の環境で同じライブラリを使いたい場合によく利用されていました。

現在新しく開発する場合は、利用するアプリケーションのターゲットに合わせて、通常の.NET向けクラスライブラリを作ることが多いです。

ただし、古い.NET Frameworkアプリと現在の.NETアプリの両方から使いたい場合など、互換性を重視する場面では.NET Standardを検討することがあります。

9-5. 初心者はプロジェクト参照とDLL参照のどちらを使うべきか

初心者には、まずプロジェクト参照がおすすめです。クラスライブラリと呼び出し側プロジェクトを同じソリューションに入れておけば、コードを修正してすぐに動作確認できます。

DLL参照は、ビルド済みのライブラリを外部から利用する場合に便利ですが、DLLの更新忘れや参照先のずれが起きることがあります。

C#クラスライブラリの作り方を学ぶ段階では、プロジェクト参照で基本を理解し、その後にDLL参照やNuGetパッケージ化を学ぶ流れが分かりやすいです。

まとめ

C#のクラスライブラリは、共通処理をまとめて再利用するための便利な仕組みです。クラスやメソッドをライブラリとして作成しておけば、コンソールアプリ、Webアプリ、デスクトップアプリなど、さまざまなプロジェクトから参照して利用できます。

クラスライブラリを作成する基本的な流れは、Visual Studioでクラスライブラリプロジェクトを作成し、クラスやメソッドを追加し、ビルドして、呼び出し側プロジェクトから参照するというものです。

初心者のうちは、同じソリューション内でプロジェクト参照を使う方法がおすすめです。慣れてきたら、DLL参照、NuGetパッケージ化、単体テスト、Gitによるバージョン管理などにも挑戦すると、より実践的にクラスライブラリを活用できます。

C#クラスライブラリを使いこなせるようになると、コードの重複を減らし、保守しやすく、再利用しやすいアプリケーションを作れるようになります。まずは小さな共通処理をクラスライブラリにまとめるところから始めてみましょう。