Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9525

CUIによる C# Managed DLL の作成・ Global Assembly Cache へのインストール・利用手順

$
0
0

概要

Visual Studioが利用できない環境で C# Managed DLL を Global Assembly Cache (以下「GAC」)にインストールし、
実行ファイルから参照したい機会があったので、手順をまとめておきます。

今時そんな機会はほぼ無いと思われますが、もしかしたらあるところにはあるかも?多分。


手順

1. C# Managed DLL を作成

概要に記載の通り「 Visual Studioが利用できない環境」想定のため、手動で作成します。
本記事の主目的では無いため、詳細は省略。
拾ってきた C# Managed DLL を GAC にインストール・利用したい場合は、手順ごと省略可能です。

SampleDll.cs
[assembly:System.Reflection.AssemblyVersion("1.0.0.0")]publicstaticclassSampleDll{publicstaticvoidWriteLine(){System.Console.WriteLine("WriteLine from SampleDll.");}}
C# Managed DLL ビルドコマンド
sn-k KeyFile.snk
csc/o+/t:library/keyfile:KeyFile.snk SampleDll.cs

2. C# Managed DLL の GAC へのインストール

Gacutil.exeを使用することで C# Managed DLL の GAC へのインストールが可能です。

Microsoft Docsには「このツールは、Visual Studio と共に自動的にインストールされます。」と記載があり Visual Studioが必要そうですが、
(恐らく)標準でProgram Filesの「Microsoft SDKs」に入っているため
Visual Studio は必要ありません。
(手元の環境では「C:/Program Files (x86)/Microsoft SDKs/Windows/v10.0A/bin/NETFX 4.8 Tools/gacutil.exe」にありました。)

インストールコマンド
gacutil/i SampleDll.dll

3. GAC の利用

ビルド時の利用

GAC へインストールした C# Managed DLL は .NET Framework
のバージョンにより
「%windir%\Assembly」または「%windir%\Microsoft.NET\Assembly」に格納されています。
しかし、そのパスを csc.exe で簡単に参照することはできないため、
本記事では「実行時の参照」のみ「 GAC の利用」として扱い、ビルド時の利用方法については扱いません。
CUIによるビルド時に GAC を利用したい場合、素直に MSBuildを使用しましょう。
(Microsoft Docsに記載されている通り MSBuildVisual Studioに依存しません。)
( GAC にインストールされたファイルからリンク対象 DLL を検索するスクリプトを作成し、 csc.exe をラップするのも一つの方法です。)

SampleExe.cs
staticclassSampleExe{staticvoidMain(){SampleDll.WriteLine();}}
ビルドコマンド
csc/o+SampleExe.cs /r:SampleDll.dll
実行時の利用

Microsoft Docs の ランタイムがアセンブリを検索する方法に記載されている通り、
アプリケーション構成ファイルの作成・編集等、実行時の参照先としての一切の指定は不要で、
その環境におけるあらゆる実行ファイルで(必要に応じて)自動で参照されます。

例として、「3. GAC の利用> ビルド時の利用」で作成した実行ファイル「SampleExe.exe」は、
ビルド時に参照先と指定した同一ディレクトリにある「SampleDll.dll」を削除しても問題なく動作します。


Viewing all articles
Browse latest Browse all 9525

Trending Articles