C#のGACツールを使って、プログラムを実行できるようにする。

はじまり、はじまり。
今回は、アセンブリの開発~配置~実行についてまとめました。

■ ■ ■ ■ 目次
1. 厳密名付きdllの作成 (アセンブリの作成)
1-1. dllのコンパイル
1-2. dllのリンク
2. 厳密名付きdllの配置 (アセンブリのインストール)
2-1. dllがGACに登録されてない事の確認
2-2. dllをGacUtilでGACに登録
2-3. dllがGACに登録されている事の確認
3. exeの作成
4. exeの実行
5. おまけ (厳密名付きdllのアンインストール (アセンブリのアンインストール) )
5-1. dllがGACに登録されている事の確認
5-2. dllをGacUtilでGACから削除 (管理者で実行)
5-3. dllがGACに登録されてない事の確認

■ ■ ■ ■ まとめ結果

■ ■ ■ 1. 厳密名付きdllの作成 (アセンブリの作成)

■ ■ 1-1. dllのコンパイル

■ テストコード (StrixUralensis.cs)

-------------------
using System;

public class StrixUralensisClass
{
    public static StrixUralensisClass Create()
    {
        Console.WriteLine("StrixUralensis[フクロウ]Class.Create()");
        return new StrixUralensisClass();
    }
}
-------------------

■ コンパイル

-------------------
C:\Users\user>CD C:\CSharp

C:\CSharp>SET CSC_DIR=C:\Windows\Microsoft.NET\Framework64\v4.0.30319

C:\CSharp>"%CSC_DIR%\csc.exe" /nologo /t:module StrixUralensis.cs

C:\CSharp>
-------------------

■ ■ 1-2. dllのリンク

-------------------
C:\Users\user>CD C:\CSharp

C:\CSharp>SET AL_DIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64

C:\CSharp>"%AL_DIR%\al.exe" /t:library /out:StrixUralensis.dll /version:1.0 /keyname:CspContainer /nologo StrixUralensis.netmodule

C:\CSharp>
-------------------

■ ■ ■ 2. 厳密名付きdllの配置 (アセンブリのインストール)

■ ■ 2-1. dllがGACに登録されてない事の確認

-------------------
C:\Users\user>CD C:\CSharp

C:\CSharp>SET GACUTIL_DIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64

C:\CSharp>"%GACUTIL_DIR%\gacutil.exe" /nologo /l StrixUralensis
グローバル アセンブリ キャッシュには次のアセンブリが含まれています:

項目の数 = 0

C:\CSharp>
-------------------

■ ■ 2-2. dllをGacUtilでGACに登録

-------------------
C:\Users\user>CD C:\CSharp

C:\CSharp>SET GACUTIL_DIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64

C:\CSharp>"%GACUTIL_DIR%\gacutil.exe" /nologo /i StrixUralensis.dll
アセンブリが正しくキャッシュに追加されました

C:\CSharp>
-------------------

■ ■ 2-3. dllがGACに登録されている事の確認

-------------------
C:\Users\user>CD C:\CSharp

C:\CSharp>SET GACUTIL_DIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64

C:\CSharp>"%GACUTIL_DIR%\gacutil.exe" /nologo /l StrixUralensis
グローバル アセンブリ キャッシュには次のアセンブリが含まれています:
  StrixUralensis, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7137228d5cbf3bf, processorArchitecture=MSIL

項目の数 = 1

C:\CSharp>
-------------------

■ ■ ■ 3. exeの作成

■ テストコード (AikotobahaStrix.cs)

-------------------
using System;

class StrixClass
{
    static void Main(string[] args)
    {
        Console.WriteLine("Strix[フクロウ類]Class.Main()");
        StrixUralensisClass.Create();
    }
}
-------------------

■ コンパイル結果

-------------------
C:\Users\user>CD C:\CSharp

C:\CSharp>SET CSC_DIR=C:\Windows\Microsoft.NET\Framework64\v4.0.30319

C:\CSharp>"%CSC_DIR%\csc.exe" /noconfig /r:StrixUralensis.dll /nologo AikotobahaStrix.cs

C:\CSharp>
-------------------

■ ■ ■ 4. exeの実行

-------------------
C:\Users\user>CD C:\CSharp

C:\CSharp>AikotobahaStrix.exe
Strix[フクロウ類]Class.Main()
StrixUralensis[フクロウ]Class.Create()

C:\CSharp>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 4840-5473 です

 C:\CSharp のディレクトリ

2018/06/03  18:44              .
2018/06/03  18:44              ..
2018/06/03  18:42             3,584 AikotobahaStrix.exe
               1 個のファイル               3,584 バイト
               2 個のディレクトリ  57,164,226,560 バイトの空き領域

C:\CSharp>
-------------------

■ ■ ■ 5. おまけ (厳密名付きdllのアンインストール (アセンブリのアンインストール) )

■ ■ 5-1. dllがGACに登録されている事の確認

-------------------
C:\Users\user>CD C:\CSharp

C:\CSharp>SET GACUTIL_DIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64

C:\CSharp>"%GACUTIL_DIR%\gacutil.exe" /nologo /l StrixUralensis
グローバル アセンブリ キャッシュには次のアセンブリが含まれています:
  StrixUralensis, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7137228d5cbf3bf, processorArchitecture=MSIL

項目の数 = 1

C:\CSharp>
-------------------

■ ■ 5-2. dllをGacUtilでGACから削除 (管理者で実行)

-------------------
C:\Users\user>CD C:\CSharp

C:\CSharp>SET GACUTIL_DIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64

C:\CSharp>"%GACUTIL_DIR%\gacutil.exe" /nologo /u StrixUralensis,Version=1.0.0.0,Culture=neutral,PublicKeyToken=b7137228d5cbf3bf

アセンブリ: StrixUralensis, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7137228d5cbf3bf, processorArchitecture=MSIL
アンインストール済み: StrixUralensis, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b7137228d5cbf3bf, processorArchitecture=MSIL
アンインストールされたアセンブリの数 = 1
エラーの数 = 0

C:\CSharp>
-------------------

■ ■ 5-3. dllがGACに登録されてない事の確認

-------------------
C:\Users\user>CD C:\CSharp

C:\CSharp>SET GACUTIL_DIR=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64

C:\CSharp>"%GACUTIL_DIR%\gacutil.exe" /nologo /l StrixUralensis
グローバル アセンブリ キャッシュには次のアセンブリが含まれています:

項目の数 = 0

C:\CSharp>
-------------------

おわり