ここでは.NET Frameworkでのクラスライブラリについてと、その作り方について解説します。 クラスライブラリを作成する言語と使用する言語に同一の言語を使用しますが、異なる言語のクラスライブラリを使用することもできます。 その場合の注意点などについては言語間の相互運用性と共通言語仕様 (CLS)で解説しています。 また、XMLドキュメントコメントを用いたドキュメントの作成では作成したクラスライブラリのドキュメントを作成する方法について解説しています。 必要に応じて参照してください。

なお、ここで紹介するクラスライブラリはデザインに関するガイドラインに従うようにしていますが、ガイドラインの詳細については触れません。 詳しくはMSDNのクラス ライブラリ開発のデザイン ガイドラインを参照してください。

また、名前空間やクラスの基本など、クラスライブラリを作成する上で必要になってくる言語の要素については解説しないので、必要に応じて以下のページなどを参照してください。

§1 .NET Frameworkにおけるライブラリの位置づけ

クラスライブラリの作り方を見ていく前に、.NET Frameworkにおけるクラスライブラリの位置づけと関連する概念についてざっと触れておきます。

.NET Frameworkにおいては、実行可能ファイル(.exe)やライブラリ(.dll)はアセンブリという構成単位で扱われます。 アセンブリには、アプリケーションプロセスを起動するためのエントリポイント(Mainメソッド)を含む実行可能なアセンブリと、エントリポイントは持たずアプリケーションや他のライブラリから使用されるクラスを含むライブラリアセンブリがあります。 .NET Frameworkにおけるクラスライブラリは、ライブラリアセンブリとしてビルドされることになります。

各アセンブリには、アセンブリの実行コードの他、アセンブリが外部に公開する型の情報やアセンブリ自身が依存する他のアセンブリについての参照情報などのメタデータが含まれています。 そのため、ビルド・実行時にはヘッダーファイルやlibファイルといったファイルは不要で、アセンブリ本体から必要な情報が取得されます。 また、必要に応じてアセンブリにリソースを含めることも出来ます。

アセンブリについての詳細は、以下のドキュメントを参照してください。

.NET Frameworkのクラスライブラリは、C#やVB.NETなどの言語で記述・使用することが出来ます。 例えばC#で記述したライブラリアセンブリを参照してVB.NETで使用するといったことが可能です。

クラスライブラリを異なる言語でも使用できるようにする場合に考慮すべき事項や注意点などについては言語間の相互運用性と共通言語仕様 (CLS)で解説します。



§2 ライブラリアセンブリの作成

それではクラスライブラリの作り方について見ていきます。 ここでは、コマンドラインを使った場合と、IDEを使った場合の二つの方法でのクラスライブラリの作り方について紹介します。 なお、以下の手順では次のような構成のクラスライブラリを作成することにします。

アセンブリ名
Smdn.Utils (Smdn.Utils.dll)
ルート名前空間
Smdn.Utils
アセンブリに含める型
以下の2つのクラスを含める
StringUtilsクラス
文字列操作に関する以下のユーティリティメソッドを提供する
Reverseメソッド
引数で指定された文字列の並びを逆転した文字列を返すメソッド
SplitBySpaceメソッド
引数で指定された文字列を全角および半角の空白で区切った配列で返すメソッド
OrderByLengthComparerクラス
Comparer<string>を継承し、文字列の長さに従って並べ替えるようにオーバーライドしたクラス

§2.1 ソースファイルの内容

以下の手順では、一つのソースファイルに一つのクラスを含めるようにします。 個々のソースファイルに記述する内容は、以下の内容を使います。

StringUtils.cs
using System;

namespace Smdn.Utils {
  public static class StringUtils {
    public static string Reverse(string str)
    {
      if (str == null) throw new ArgumentNullException("str");

      char[] chars = str.ToCharArray();

      Array.Reverse(chars);

      return new string(chars);
    }

    public static string[] SplitBySpace(string str)
    {
      if (str == null) throw new ArgumentNullException("str");

      return str.Split(new char[] {' ', ' '}, StringSplitOptions.None);
    }
  }
}
OrderByLengthComparer.cs
using System;
using System.Collections.Generic;

namespace Smdn.Utils {
  public class OrderByLengthComparer : Comparer<string> {
    public override int Compare(string x, string y)
    {
      return x.Length - y.Length;
    }
  }
}

また、クラスライブラリを作成した後、動作テストをするために以下のコードを使います。

test.cs; 作成したクラスライブラリをテストするプログラム
using System;
using Smdn.Utils;

class Sample {
  static void Main()
  {
    string s1 = "The quick brown fox jumps over the lazy dog";
    string s2 = "かごめかごめ かごのなかのとりは いついつでやる";

    // StringUtils.Reverseメソッドのテスト
    Console.WriteLine("[StringUtils.Reverse]");
    Console.WriteLine(StringUtils.Reverse(s1));
    Console.WriteLine(StringUtils.Reverse(s2));

    // StringUtils.SplitBySpaceメソッドのテスト
    string[] w1 = StringUtils.SplitBySpace(s1);
    string[] w2 = StringUtils.SplitBySpace(s2);

    Console.WriteLine("[StringUtils.SplitBySpace]");

    Print(w1);
    Print(w2);

    // OrderByLengthComparerクラスのテスト
    Console.WriteLine("[OrderByLengthComparer]");

    OrderByLengthComparer comparer = new OrderByLengthComparer();

    Array.Sort(w1, comparer);
    Array.Sort(w2, comparer);

    Print(w1);
    Print(w2);
  }

  static void Print(string[] words)
  {
    foreach (string word in words) {
      Console.WriteLine(word);
    }
  }
}

§3 コマンドラインでの作成手順

ここではクラスライブラリの作成に必要最低限の手順を理解するためにコマンドラインでのビルド手順を解説します。 コマンドラインでの操作に興味がない場合は、IDEを使ったビルド手順まで読み飛ばしてください。

§3.1 csc, vbcを使った例

ここではMicrosoftのC#コンパイラであるcsc.exeとVisual Basicコンパイラであるvbc.exeを使ってクラスライブラリを作成する手順を見ていきます。 クラスライブラリをビルドする上で最低限必要なコンパイルオプションは以下のとおりです。

/target:library
出力するアセンブリの種類をライブラリアセンブリにする
/out:Smdn.Utils.dll
出力ファイル名を"Smdn.Utils.dll"にする
(入力ファイル)
ビルドするライブラリアセンブリのソースファイル(先に挙げたライブラリのソースファイル2つ)を指定する

vbcでは、必要に応じて/optionstrict+や/optionexplicit+などのオプションも指定します。

cscでのクラスライブラリのビルド
D:\classlibrary\cs>csc /target:library /out:Smdn.Utils.dll StringUtils.cs OrderByLengthComparer.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.1
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.


D:\classlibrary\cs>dir /B
OrderByLengthComparer.cs
Smdn.Utils.dll
StringUtils.cs

ビルドが完了すると、上記のとおりライブラリアセンブリSmdn.Utils.dllが作成されているはずです。 なお、環境変数PATHを設定していない場合はcsc、vbcを実行出来ないので、以下のコマンドでパスを通しておく必要があります。

csc・vbcを使用するためにパスを通す
set PATH=C:\WINDOWS\Microsoft.NET\Framework\v3.5;%PATH%

§3.2 mcs, vbncを使った例

ここではMonoのC#コンパイラであるmcs(gmcs)とVisual Basicコンパイラであるvbncを使ってクラスライブラリを作成する手順を見ていきます。 基本的にはcsc・vbcと同じで、クラスライブラリをビルドする上で最低限必要なコンパイルオプションは以下のとおりです。

/target:library
出力するアセンブリの種類をライブラリアセンブリにする
/out:Smdn.Utils.dll
出力ファイル名を"Smdn.Utils.dll"にする
(入力ファイル)
ビルドするライブラリアセンブリのソースファイル(先に挙げたライブラリのソースファイル2つ)を指定する

vbncでは、必要に応じて/optionstrict+や/optionexplicit+などのオプションも指定します。

gmcsでのクラスライブラリのビルド
[~/classlibrary/cs]$ gmcs /target:library /out:Smdn.Utils.dll StringUtils.cs OrderByLengthComparer.cs
[~/classlibrary/cs]$ ls -1
OrderByLengthComparer.cs
Smdn.Utils.dll
StringUtils.cs

ビルドが完了すると、上記のとおりライブラリアセンブリSmdn.Utils.dllが作成されているはずです。

§3.3 ビルドしたライブラリのテスト

ここまでの手順で作成したクラスライブラリを使って実行可能ファイルを作り、動作テストをしてみます。 ライブラリアセンブリを使って実行可能ファイルをビルドする上で最低限必要なコンパイルオプションは以下のとおりです(すべてcsc・vbcおよびmcs・vbncで共通するオプションです)。

/r:Smdn.Utils.dll
ライブラリアセンブリ(作成したSmdn.Utils.dll)を参照するように指定する
(入力ファイル)
実行可能ファイルのソースファイル(先に挙げたテスト用のソースファイル)を指定する

vbc・vbncでは、必要に応じて/optionstrict+や/optionexplicit+などのオプションも指定します。

cscを使ってクラスライブラリを参照してビルドする
D:\classlibrary\cs>csc /r:Smdn.Utils.dll test.cs
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.1
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.


D:\classlibrary\cs>dir /B
OrderByLengthComparer.cs
Smdn.Utils.dll
StringUtils.cs
test.cs
test.exe

ビルドが完了したら、上記のとおり実行可能ファイルtest.exeが作成されているはずです。 このファイルを実行すると、次のようなテスト結果が得られるはずです。

実行結果
[StringUtils.Reverse]
god yzal eht revo spmuj xof nworb kciuq ehT
るやでついつい はりとのかなのごか めごかめごか
[StringUtils.SplitBySpace]
The
quick
brown
fox
jumps
over
the
lazy
dog
かごめかごめ
かごのなかのとりは
いついつでやる
[OrderByLengthComparer]
the
fox
The
dog
over
lazy
quick
brown
jumps
かごめかごめ
いついつでやる
かごのなかのとりは

§4 IDEでの作成手順と設定

ここではIDEを使ってクラスライブラリを作成する手順と、作成したクラスライブラリを使用する手順について解説します。 ここで紹介する手順では、一つのソリューションにクラスライブラリ用のプロジェクトとテスト用のプロジェクトを含めることにします。 IDEを使わずコマンドラインで作成したい場合はコマンドラインを使ったビルド手順を参照してください。

§4.1 Visual Studio 2008での例

§4.1.1 ソリューションとクラスライブラリ用のプロジェクトの作成

まずは、ソリューションとクラスライブラリ用のプロジェクトを作成します。 [ファイル]メニューから[新規作成]→[プロジェクト]を選択します。

次に、種類の一覧で[Visual C#]や[Visual Basic]などクラスライブラリを作成する上で使用する言語を指定し、[クラス ライブラリ]を選択します。 [プロジェクト名]の欄にはクラスライブラリのプロジェクト名となる"Smdn.Utils"を指定します。 ここではソリューション名を"classlibrary"としました。

ここまでの手順で、ソリューションとクラスライブラリ用のプロジェクト、ソースファイルのテンプレートが自動生成されます。 以降、このプロジェクトをビルドすると、ライブラリアセンブリが作成されます。 テンプレートファイル(Class1)は不要なので削除しておくと良いでしょう。

続いて、クラスのコードを記述するためファイルを追加します。 プロジェクトファイルのコンテキストメニューから[追加]→[新しい項目]を選択します。

種類の一覧で[コード]を指定し、[クラス]を選択します。 ファイル名にはクラス名+拡張子を指定します。

上記の手順を繰り返してクラス用のファイルを作成し、先に挙げたソースコードを記述します。

§4.1.2 テスト用のプロジェクトの追加

次に、テスト用のプロジェクトを追加します。 クラスライブラリにはエントリーポイントがなく実行することはできないので、作成したクラスライブラリを使用してテスト用のコードを実行するためのプロジェクトを作成します。 ソリューションファイルのコンテキストメニューから[追加]→[新しいプロジェクト]を選択します。

クラスライブラリ用のプロジェクトの場合とは異なり実行可能ファイルを作成する必要があるので、ここでは[コンソール アプリケーション]を選択します。 [プロジェクト名]の欄には実行可能ファイルのプロジェクト名となる名前を入力します。 ここではプロジェクト名を"test"としました。

ここまでの手順で、テスト用のプロジェクトがソリューションに追加され、ソースファイルのテンプレートが自動生成されます。 テスト用のプロジェクトが追加出来たら、クラスライブラリのアセンブリを参照するようにします。 プロジェクトの参照設定のコンテキストメニューから[参照の追加]を選択します。

[プロジェクト]タブを選択し、クラスライブラリのプロジェクトである"Smdn.Utils"を選択します。

これで、テスト用プロジェクトのビルド時にクラスライブラリのプロジェクトを参照するようになります。

ここまでの手順で、通常の.NET Frameworkのクラスと同様にusing文(Importsステートメント)で名前空間をインポートしてクラス名を記述すると、次のように入力候補に表示されるようになります。

§4.1.3 スタートアッププロジェクトの設定

次に、ビルド後にテスト用プロジェクトを実行するようにソリューションの設定を変更します。 ソリューションのコンテキストメニューから[プロパティ]を選択します。

[共通プロパティ]→[スタートアップ プロジェクト]の項目を選択し、[シングル スタートアップ プロジェクト]を選択してテスト用のプロジェクトである"test"を指定します。

あとは先に挙げたテスト用のソースコードを記述し、ビルド・実行するとコンソールが表示され次のような結果が得られるはずです。

§4.1.4 出力結果とフォルダの内容

ビルド時の出力を確認すると、次のようになっていると思います。 ビルド時のオプションはコマンドラインでのビルドで指定したのと同じようになっていることが分かると思います。 また、ビルドの順番を見ると分かるとおり、先にクラスライブラリがビルドされ、その次にデバッグ用のプロジェクトがビルドされています。

ビルド時の出力
------ すべてのリビルド開始: プロジェクト: Smdn.Utils, 構成: Debug Any CPU ------
C:\Windows\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\Smdn.Utils.dll /target:library OrderByLengthComparer.cs Properties\AssemblyInfo.cs StringUtils.cs

コンパイルの完了 -- エラー 0、警告 0
Smdn.Utils -> e:\classlibrary\Smdn.Utils\bin\Debug\Smdn.Utils.dll
------ すべてのリビルド開始: プロジェクト: test, 構成: Debug Any CPU ------
C:\Windows\Microsoft.NET\Framework\v3.5\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /reference:e:\classlibrary\Smdn.Utils\bin\Debug\Smdn.Utils.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\test.exe /target:exe Program.cs Properties\AssemblyInfo.cs

コンパイルの完了 -- エラー 0、警告 0
test -> e:\classlibrary\test\bin\Debug\test.exe
========== すべてリビルド: 2 正常終了、0 失敗、0 スキップ ==========

なお、ビルド後に生成されたファイルは次のようになっていると思います。 クラスライブラリプロジェクトのフォルダのbin/Debug/にはdllファイルが、テスト用プロジェクトのフォルダのbin/Debug/にはクラスライブラリのdllファイルのコピーと実行可能ファイルのexeが生成されています。 以下はVisual C#での例ですが、Visual Basicでも同様の出力となります。

E:\CLASSLIBRARY
│  classlibrary.sln
│
├─Smdn.Utils
│  │  OrderByLengthComparer.cs
│  │  Smdn.Utils.csproj
│  │  StringUtils.cs
│  │
│  ├─bin
│  │  └─Debug
│  │          Smdn.Utils.dll
│  │          Smdn.Utils.pdb
│  │
│  ├─obj
│  │  └─Debug
│  │      │  Smdn.Utils.csproj.FileListAbsolute.txt
│  │      │  Smdn.Utils.dll
│  │      │  Smdn.Utils.pdb
│  │      │
│  │      └─TempPE
│  └─Properties
│          AssemblyInfo.cs
│
└─test
    │  Program.cs
    │  test.csproj
    │
    ├─bin
    │  └─Debug
    │          Smdn.Utils.dll
    │          Smdn.Utils.pdb
    │          test.exe
    │          test.pdb
    │          test.vshost.exe
    │          test.vshost.exe.manifest
    │
    ├─obj
    │  └─Debug
    │      │  ResolveAssemblyReference.cache
    │      │  test.csproj.FileListAbsolute.txt
    │      │  test.exe
    │      │  test.pdb
    │      │
    │      └─TempPE
    └─Properties
            AssemblyInfo.cs

§4.2 MonoDevelop 2.4での例

§4.2.1 ソリューションとクラスライブラリ用のプロジェクトの作成

まずは、ソリューションとクラスライブラリ用のプロジェクトを作成します。 [ファイル]メニューから[新規]→[ソリューション]を選択します。

次に、種類の一覧で[C#]や[VBNet]などクラスライブラリを作成する上で使用する言語をを指定し、[ライブラリ]を選択します。 [名前]の欄にはクラスライブラリのプロジェクト名となる"Smdn.Utils"を指定します。 ここではソリューション名を"classlibrary"としました。

続いて、このプロジェクトで有効にする機能を指定するオプションが提示されますが、ここでは特に指定せずに次に進みます。

ここまでの手順で、ソリューションとクラスライブラリ用のプロジェクト、ソースファイルのテンプレートが自動生成されます。 以降、このプロジェクトをビルドすると、ライブラリアセンブリが作成されます。 AssemblyInfoはライブラリアセンブリの情報を記述するファイルなので残しておいても良いですが、テンプレートファイルは不要なので削除しておくと良いでしょう。

続いて、クラスのコードを記述するためファイルを追加します。 プロジェクトファイルのコンテキストメニューから[追加]→[新しいファイル]を選択します。

種類の一覧で[General]を指定し、[空のファイル]を選択します。 名前にはクラス名を指定します。 ファイル名はこの名前を元に自動的に設定されます。

上記の手順を繰り返してクラス用のファイルを作成し、先に挙げたソースコードを記述します。

§4.2.2 テスト用のプロジェクトの追加

次に、テスト用のプロジェクトを追加します。 クラスライブラリにはエントリーポイントがなく実行することはできないので、作成したクラスライブラリを使用してテスト用のコードを実行するためのプロジェクトを作成します。 ソリューションファイルのコンテキストメニューから[追加]→[新しいプロジェクトを追加]を選択します。

クラスライブラリ用のプロジェクトの場合とは異なり実行可能ファイルを作成する必要があるので、ここでは[コンソール プロジェクト]を選択します。 [名前]の欄には実行可能ファイルのプロジェクト名となる名前を入力します。 ここではプロジェクト名を"test"としました。

ここまでの手順で、テスト用のプロジェクトがソリューションに追加され、ソースファイルのテンプレートが自動生成されます。 テスト用のプロジェクトが追加出来たら、クラスライブラリのアセンブリを参照するようにします。 プロジェクトの参照アセンブリのコンテキストメニューから[参照アセンブリの編集]を選択します。

[プロジェクト]タブを選択し、クラスライブラリのプロジェクトである"Smdn.Utils"にチェックを入れます。

これで、テスト用プロジェクトのビルド時にクラスライブラリのプロジェクトを参照するようになります。

ここまでの手順で、通常の.NET Frameworkのクラスと同様にusing文(Importsステートメント)で名前空間をインポートしてクラス名を記述すると、次のように入力候補に表示されるようになります。

§4.2.3 スタートアッププロジェクトの設定

次に、ビルド後にテスト用プロジェクトを実行するようにソリューションの設定を変更します。 ソリューションのコンテキストメニューから[オプション]を選択します。

[実行]→[スタートアップ プロジェクト]の項目を選択し、[単一のスタートアップ プロジェクト]を選択してテスト用のプロジェクトである"test"を指定します。

あとは先に挙げたテスト用のソースコードを記述し、ビルド・実行するとコンソールが表示され次のような結果が得られるはずです。

§4.2.4 出力結果とフォルダの内容

ビルド時の出力を確認すると、次のようになっていると思います。 ビルド時のオプションはコマンドラインでのビルドで指定したのと同じようになっていることが分かると思います。 また、ビルドの順番を見ると分かるとおり、先にクラスライブラリがビルドされ、その次にデバッグ用のプロジェクトがビルドされています。

ビルド時の出力
ビルド中: classlibrary (Debug)

ソリューション classlibrary をビルド中

ビルド中: Smdn.Utils (Debug)

メインのコンパイルを実行中...
/opt/mono/master/bin/gmcs /noconfig "/out:/home/smdn/classlibrary/cs/classlibrary/Smdn.Utils/bin/Debug/Smdn.Utils.dll" "/r:/opt/mono/master/lib/mono/2.0/System.dll" /nologo /warn:4 /debug:+ /debug:full /optimize- /codepage:utf8 "/define:DEBUG"  /t:library "/home/smdn/classlibrary/cs/classlibrary/Smdn.Utils/AssemblyInfo.cs" "/home/smdn/classlibrary/cs/classlibrary/Smdn.Utils/StringUtils.cs" "/home/smdn/classlibrary/cs/classlibrary/Smdn.Utils/OrderByLengthComparer.cs" 
ビルド完了 -- エラー 0件, 警告 0件

ビルド中: test (Debug)

メインのコンパイルを実行中...
/opt/mono/master/bin/gmcs /noconfig "/out:/home/smdn/classlibrary/cs/classlibrary/test/bin/Debug/test.exe" "/r:/opt/mono/master/lib/mono/2.0/System.dll" "/r:/home/smdn/classlibrary/cs/classlibrary/Smdn.Utils/bin/Debug/Smdn.Utils.dll" /nologo /warn:4 /debug:+ /debug:full /optimize- /codepage:utf8 "/define:DEBUG"  /t:exe "/home/smdn/classlibrary/cs/classlibrary/test/Main.cs" "/home/smdn/classlibrary/cs/classlibrary/test/AssemblyInfo.cs" 
ビルド完了 -- エラー 0件, 警告 0件

---------------------- 完了 ----------------------

ビルド成功

なお、ビルド後に生成されたファイルは次のようになっていると思います。 クラスライブラリプロジェクトのフォルダのbin/Debug/にはdllファイルが、テスト用プロジェクトのフォルダのbin/Debug/にはクラスライブラリのdllファイルのコピーと実行可能ファイルのexeが生成されています。 以下はC#での例ですが、VBでも同様の出力となります。

§5 クラスライブラリの設計・構成の例

当サイトでは以下のページにて.NET Framework向けのライブラリを公開・配布しています。

ソースも同梱しているので、クラスライブラリの設計・構成の参考になるかもしれません。 よろしければご覧ください。

§6 クラスライブラリの機能の廃止

クラスライブラリで提供している機能を非推奨としたり、廃止したりする際、Obsolete属性を用いると、その旨をライブラリを使ったコードのコンパイル時に利用者に対して通知することができます。 Obsolete属性について詳しくは機能の廃止・旧式化で解説しています。 また、クラスライブラリで提供している機能を廃止する際の方法や考慮すべき点などについては機能の廃止・旧式化 §.機能提供開始から廃止までとObsolete属性で解説しています。

§7 クラスライブラリと言語

ここまでの手順ではクラスライブラリと実行可能ファイルの両方に同じ言語を使って記述してきましたが、別々の言語で記述して使用することも出来ます。 クラスライブラリが異なる言語からも使用されることを想定する場合には、言語間の相互運用性について留意しておく必要があります。 この点については次のページで詳しく解説します。