更新日: 2009 年 11 月 10 日

C# の内容はこちらに掲載しています。 10 行でズバリ!! コードの作成と配置 (C#)

このコンテンツのポイント

  • .NET Framework での基本的なコードの作成と配置を理解する

今回紹介するコード

Visual Basic
Imports System.Reflection

Public Class SimpleName

    Private assemblyName As AssemblyName = Assembly.GetExecutingAssembly().GetName()

    ReadOnly Property Version() As String
        Get
            Return assemblyName.Version.ToString()
        End Get
    End Property

    ReadOnly Property Name() As String
        Get
            Return assemblyName.Name
        End Get
    End Property

    ReadOnly Property Culture() As String
        Get
            Return assemblyName.CultureInfo.ToString()
        End Get
    End Property
End Class
 

目次

  1. はじめに
  2. 作成するアプリケーションの概要
  3. プロジェクトを作成する
  4. アセンブリを作成する
  5. アセンブリを配置する
  6. おわりに

1. はじめに

ここでは .NET Framework 上でのアプリケーションを構築する際に最も基本となる、コードの作成とその配置について理解します。

今回、キー ポイントとなる用語は "アセンブリ" です。.NET Framework におけるアセンブリとは、exe や dll の事で、アセンブリはビルディング ブロックとして、配置、ビルド、バージョン管理、セキュリティにおけるアクセス許可の基本単位となります。また、Visual Studio では "プロジェクト" がアセンブリの単位となります。

アセンブリは内部的に、ソース コードのコンパイル結果である中間言語やそのメタデータ、画像などのリソース、そしてアセンブリの中身を示すマニフェストから構成されています。CLR はマニフェストを元にアセンブリの中身を理解し、適切にプログラムを実行します。

ここでは、Visual Studio を使ってアセンブリの作成と配置を実際に行ってみたいと思います。

ページのトップへ


2. 作成するアプリケーションの概要

アセンブリの情報をコンソールに表示するアプリケーションを作成します。

ページのトップへ


3. プロジェクトを作成する

Visual Studio を起動して、以下の手順で新規にプロジェクトを作成します。

[ファイル] メニューの [新規作成] を選択して、[プロジェクト] をクリックします。表示される [新しいプロジェクト] ダイアログ ボックスの、プロジェクトの種類ペインで [Visual Basic] ノードを展開し、[Windows] をクリックします。図 1 の通り、[テンプレート] ペインでは [コンソール アプリケーション] をクリックします。([プロジェクト名] ボックス、[場所] ボックスには任意の名称とパスを指定してください。)

図 1. プロジェクト テンプレートを選択してプロジェクトを作成

つづいて、ソリューションにプロジェクトを追加します。[ソリューション エクスプローラー] のソリューションを右クリックします。表示されるメニューの [追加] をポイントし、展開されたメニューの [新しいプロジェクト] をクリックします。

図 2. プロジェクト を追加する

そうすると、図 1 のような画面が表示されます。初めのプロジェクトを作成した時と同様に、表示される [新しいプロジェクト] ダイアログ ボックスの、プロジェクトの種類ペインで [Visual Basic] ノードを展開し、[Windows] をクリックします。[テンプレート] ペインで、今度は [クラス ライブラリ] をクリックします。今回はプロジェクト名を SimpleNameAssembly とします。これで 2 つのプロジェクトが作成されました。

ページのトップへ


4. アセンブリを作成する

それではアセンブリを作成したいと思います。

まずは、プログラムに意味のあるコードを記述します。後で追加した SimleNameAssembly というプロジェクトにコードを追記していきます。

コードを追加する前に、デフォルトで表示されるコードの中身について簡単に解説しておきたいと思います。この時点のコードは下記のようになっているはずです。

Visual Basic
Public Class Class1

End Class
 

Visual Basic では様々な設定がコード上では省略されています。省略されているものも含めて、Visual Basic でコードを記述するための基本的な構文を紹介します。

ソース コードのファイル内における名前空間への参照を定義する場合、"Imports" で始まる行を記述します。例えば System.Reflection 名前空間を参照する場合は "Imports System.Reflection" と記述します。ここで名前空間を参照する場合は、プロジェクトがその名前空間を含んでいるアセンブリへの参照の定義を行っている必要があります。

名前空間の宣言を行うには "Namespace" を使用します。名前空間はクラスや構造体などのプログラム要素を意味ある集合にまとめる役割をしており、複数のクラスや構造体などのプログラム要素を含む得ることができます。例えば MyNamespace という名前空間を宣言したい場合は、"Namespace MyNamespace" と宣言します。この宣言から、対応する "End Namespace" の間に含まれる要素がその名前空間に属しますまた、名前空間はアセンブリの中で複数定義することが可能です。今回は省略されているため、[ソリューション エクスプローラー] の SimpleNameAssembly を右クリックし、[プロパティ] をクリックして表示される画面の [アプリケーション] タブにある [ルート名前空間] が適用されます。

"Class" という宣言はオブジェクト指向プログラミングにおけるクラスを宣言しています。この中にメソッドやフィールドなどを追記していきます。

それでは、コードを編集していきたいと思います。まず、[ソリューション エクスプローラー] の SimpleNameAssembly に Class1.vb というファイルがありますので、それを右クリックし [名前の変更] で SimpleName.vb に変更します。

図 3. 名前を変更する

「"Class1" への参照をすべて変更しますか?」と記載されたダイアログ ボックスが表示されますので、[はい] をクリックすることで、コード内に記載された既定の Class1 の名称が SimpleName に変更されます。

こちらの SimpleName クラスにコードを追加していきます。追加するコードは太字のソース コードです。

Imports System.Reflection

Public Class SimpleName

    Private assemblyName As AssemblyName = Assembly.GetExecutingAssembly().GetName()

    ReadOnly Property Version() As String
        Get
            Return assemblyName.Version.ToString()

       End Get
    End Property

    ReadOnly Property Name() As String
        Get
            Return assemblyName.Name
        End Get
    End Property

    ReadOnly Property Culture() As String
        Get
            Return assemblyName.CultureInfo.ToString()
        End Get
    End Property

End Class

今回は実行中のアセンブリの情報を提供するプロパティを追加しました。今回は Assembly というクラスを使用するため、このクラスを含んでいる System.Reflection 名前空間への参照を追加します。これをビルドしてみましょう。

[ソリューション エクスプローラー] の SimpleNameAssembly を右クリックし、[ビルド] をクリックします。

図 4. プロジェクトをビルドする

ビルドが完了したら、作成されたアセンブリを確認します。ソース コード エディターの SimpleName.vb のタブを右クリックし、表示されたメニューの [含んでいるフォルダーを開く] をクリックします

図 5. ソース コードのフォルダーを開く

ここで SimpleName.vb を含んでいるフォルダーが Windows Explorer で開かれます。その中の bin フォルダーの中の Debug フォルダー (Release モードでビルドした場合は Release フォルダーになります) を開きます。

図 6. アセンブリを確認する

Debug フォルダーの中に SimpleNameAssembly.dll というファイルが確認できるかと思います。これが作成されたアセンブリです。

ページのトップへ


5. アセンブリを配置する

つぎに、作成したアセンブリを配置します。先ほど作成した SimpleNameAssembly.dll はクラス ライブラリ形式のアセンブリのため、それ単体では実行できません。そこで、最初に作成した実行可能なコンソール アプリケーション (ここでは HostConsole という名前を使います) を使って SimpleNameAssembly.dll を呼び出します。

まずは、最初に作成した HostCosole を右クリックし、表示されたメニューの [参照の追加] をクリックします。ダイアログが表示されるので、[プロジェクト] タブをクリックし、そこに表示されている SimpleNameAssembly プロジェクトを選択し、[OK] をクリックします。

図 7. プロジェクトの参照を追加する

そして、メイン関数がある Module1.vb を編集していきます。

処理内容としては SimpleNameAssembly から名前とバージョンを取得し、コンソールに表示する処理を追加します。太字の部分のコードが追加するコードです。

Imports SimpleNameAssembly

Module Module1
    Sub Main()
        Dim simpleName As SimpleName = New SimpleName
        Console.WriteLine(simpleName.Name)
        Console.WriteLine(simpleName.Version)
        Console.ReadKey()
    End Sub
End Module

こちらのアセンブリも先ほどと同様にビルドします。[ソリューション エクスプローラー] の HostConsole を右クリックし、[ビルド] をクリックします。また、同様にコード エディターの Module1.vb のタブを右クリックし、[含んでいるフォルダーを開く] をクリックし、bin の中にある Debug とたどり、HostConsole.exe をコピーします。

コピーした HostConsole.exe を適当なフォルダーを作成し、ペーストします。今回は "C:\demo\deploy\" にペーストします。同様に先ほどビルドした SimpleNameAssembly.dll も同じフォルダーにコピー & ペーストします。

図 8. アセンブリをコピー & ペーストで配置する

これでアセンブリの配置が完了します。この 2 つのファイルは拡張子が異なりますが、どちらもアセンブリです。それでは実行してみましょう。

図 9. 実行結果

特別な処理を実行することなく、実行できた事が確認できたかと思います。これは .NET Framework がアセンブリをロードするためにアセンブリを検索しているためです。実行ディレクトリの中から、アセンブリの簡易名を元に対象のアセンブリを検索し、実行しています。この際に、環境変数の PATH を検索対象に含んでいないことを注意する必要があります。

ページのトップへ


6. おわりに

今回は、.NET Framework のアプリケーションを構築する際に、記述するコードの概要と、その配置に関して説明しました。今回は最も単純な配置を紹介しましたが、アセンブリのバージョン管理や複数のアプリケーションでのアセンブリの共有を行う場合は、厳密名を使用したアセンブリの構築や特殊な配置を考慮する必要があります。こちらに関してはまた別途紹介します。


Code Recipe .NET Framework デベロッパー センター

ページのトップへ