mikeo_410


 module、マルチファイルアセンブリ

プログラムの構成単位

  C++のケースでは、.cpp -> .obj とコンパイルされます。
  .obj が得られれば、Fortranなどの他のコンパイラの出力でもリンクできる可能性があります。
  しかし、C#のコンパイラである csc は、.obj を作りません。
  csc の出力形式は、/t(arget):library のように指定します。
  ターゲットはlibrary(.dll)、module(.netmodule)、exe(.exe)、winexe(.exe)になります。
  プログラムを分割して作成する場合、コンパイル済みでリンク可能なのは、この単位で、「アセンブリ」単位と言うことになります。

module

  csc /t:module assem1.cs
  として、assem1.netmodule が作られます。
  .netmodule は、後述のマルチファイルアセンブリの入力(構成要素)などで注目しました。
  しかし、DLL とほとんど区別がないようです。
  含まれる内容が同じで、DLLと同様実行も可能です。

マルチファイルアセンブリ

  al /t:library assem1.netmodule assem2.netmodule /out:new.dll
  にして、2つのDLLを1つにできると考えましたが間違いでした。
  このコマンドは、new.dll に、2つの .netmodule のファイル名を記録するだけでした。
  実行には、.netmodule ファイルが必要です。
  この情報にパスは含まれないので、配置を変更する目的にも使用できません。


mikeo_410@hotmail.com