極東IT Engineers 設立記念勉強会

そういえば、デモの内容をメモってたのを思い出したので貼り付けておきます。

.NETアプリケーションの起動

App Domain

1. アプリの作成

アプリの依存関係の説明

2.DumpBin
/Dependents
C:\Program Files\Microsoft Visual Studio 9.0\VC\bin

mscoree.dll -> mscorwks.dll

AppDomain

3. プロセス起動
4. mscoree.dll
5. SystemDomain
6. SharedDomain
7. load mscorlib.dll
8. Default AppDomain
9. アセンブリロード

Assembly

Assemblyの内部

1. ildasm
C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin
2. [表示] - [メタ情報] - [表示]
3. 内部構造
マニフェスト
メタデータ
コード
リソース
4.マニフェスト
アセンブリ
バージョン番号
カルチャ
公開キー
アセンブリ内のファイルリスト
参照アセンブリに関する情報
------------------
TypeDef
TypeRef
Assembly
AssemblyRef

StrongName

1. キーペアの作成
sn -k key.snk
"C:\Program Files\Microsoft Visual Studio 8\sdk\v2.0\Bin\sn.exe" -k key.snk
2. ソースにバージョン情報を追加
[assembly: System.Reflection.AssemblyVersion("1.2.3.4")]
3. 厳密名付きアセンブリの作成
C:\windows\Microsoft.NET\Framework\v3.5\csc /keyfile:key.snk /out:demo1sn.exe demo1.cs
4. ildasmでバージョン情報、publicKeyの確認

IL

1. ILDASM
2. JIT
3. NGEN

Assembly Probe

・構成ファイルでバージョン指定
・GACを探す
・Probe
構成ファイルの
アセンブリのカルチャ ディレクトリで探す
ベース ディレクトリで探す
構成ファイルの

GAC

中を追ってみよう

GAC 1.0, 1.1
GAC_MSIL OnlyManaged
GAC_32 32BitNativeを含む
GAC_64 64BitNativeを含む

CAS

GC

1. Managed Heap
2. NextObjPtr
3. Generation
4. Compaction
5. Dispose
6. Finalization List
7. F Reachable Queue