読者です 読者をやめる 読者になる 読者になる

IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

アセンブリの練習

C#でdllを作るにはどうしたらよいだろうとWeb検索をしてみましたが、それらしい情報がうまく見つけられませんでした。どうも、C#でdllを作るという考えがあまりよろしくないようです。C#では、外部ライブラリとしては、アセンブリという仕組み(名称)になっていて、それがexeだったりdllだったりします。なので、期待する情報を見つけるには「C# アセンブリ」でWeb検索が必要でした。

参考情報

いろいろ検索しましたが、結局、本家本元をみるのがわかりやすいですね。

まとめると

やり方としては、簡単そうに思えます。

  1. VisualStudioで新規プロジェクトにて、Class Libraryを選択する。
  2. ビルドするとdllが生成される。
  3. 利用側(のプロジェクト)で、作ったアセンブリに対する参照を設定する。
  4. アセンブリ名前空間をusingする。

ただ、実際に業務でアセンブリを作るときは、マニフェストを綿密に設定する必要がありますね。

練習内容

新規プロジェクトにてクラスライブラリを選択する。
f:id:naotoogawa:20140331211123p:plain

利用されるクラスをコーディングする。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClassLibrary1
{
    public class Class1
    {
        private int counter = 0;

        public int getCouneter()
        {
            counter++;
            return counter;
        }

    }
}

ビルドするとdllができる。
f:id:naotoogawa:20140331211121p:plain

マニフェストは、AssemblyInfo.csに作られるようです。xmlではないみたいですね。
f:id:naotoogawa:20140331212544p:plain
f:id:naotoogawa:20140331212548p:plain


新規プロジェクトを作成し、アセンブリの参照を設定する。
f:id:naotoogawa:20140331211130p:plain

アセンブリを利用するコーディングを行う。
参照設定をしたのでインテリセンスが効く。
f:id:naotoogawa:20140331211133p:plain
最終的な確認コードは下記です。

using System;
using System.Diagnostics;
using ClassLibrary1;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Class1 clazz1 = new Class1();
            Debug.WriteLine(clazz1.getCouneter());
            Debug.WriteLine(clazz1.getCouneter());
            Debug.WriteLine(clazz1.getCouneter());
        }
    }
}

Outputウィンドウの確認は下記です。

'ConsoleApplication2.vshost.exe' (CLR v4.0.30319: ConsoleApplication2.vshost.exe): Loaded 'c:\Users\mytest01\Documents\Visual Studio 2013\Projects\ConsoleApplication2\ConsoleApplication2\bin\Debug\ClassLibrary1.dll'. Symbols loaded.
'ConsoleApplication2.vshost.exe' (CLR v4.0.30319: ConsoleApplication2.vshost.exe): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
1
2
3
The thread 0x9c8 has exited with code 259 (0x103).
The thread 0x1f4 has exited with code 259 (0x103).