アセンブリについてアセンブリとは….NET Framework(CLR)における基本的な単位で、配布する際の単位となる。 詳細は下記の記事を参照。 以下は、実際に運用で環境を準備する際の手順を記す。 VusialStudio .NET 2003では、シングルファイルアセンブリとしてビルドが行われる。 <プロジェクト名>\bin\<プロジェクト名>.dll アセンブリの内容
マニフェストに含まれるもの
アセンブリの名前には、主に次の情報が含まれる
アセンブリ名の設定はプロジェクトディレクトリに含まれる「AssemblyInfo.cs」で行う。
バージョン:
[assembly: System.Reflection.AssemblyVersion("1.0.0.0")] <-- デフォルトは「1.0.*」
カルチャ:
[assembly: System.Reflection.AssemblyCulture("")] <-- なにも指定しない(neutral)
公開キー:
[assembly: System.Reflection.AssemblyKeyName("CspContainer")] <-- 任意のCSPコンテナ名
秘密鍵で署名を行う手順【厳密名のアセンブリ】
sn.exeに“-k”オプションを付けて、ファイル名を指定すると、キー・ペアを作成してファイルに出力することができる。拡張子は、snkとする。 % sn.exe -k myKey.snk
次のように“-i”オプションでファイルとCSPコンテナを指定 % sn.exe -i myKey.snk CspContainer
% del myKey.snk
[assembly: System.Reflection.AssemblyKeyName("CspContainer")]
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("1.0.*")] <-- "*"にしておくと、リビジョンを自動的に割り振る。
ただし、上記の手順はコンパイルする際にキーペア(公開キーと秘密キーのペア)が必要になる為、複数人数開発時にはシステムの出荷直前の最終段階で秘密キーを用いた署名を行う。この手順を「遅延署名]と呼ぶ。 遅延署名の手順
% sn.exe -k myKey.snk
次のように“-i”オプションでファイルとCSPコンテナを指定 % sn.exe -i myKey.snk CspContainer
% del myKey.snk
% sn -pc CspContainer myKeyPublic.snk
[assembly: System.Reflection.AssemblyKeyFile("myKeyPublic.snk")] <-- 公開キーを指定
[assembly: System.Reflection.AssemblyDelaySign(true)] <-- 遅延署名を行う
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyVersion("1.0.0.0")] <-- メジャー番号"1"以外は"0"にする。※理由は…
このままで実行すると、CLRのセキュリティチェックが行われ、秘密キーで署名していない為エラーとなる。 以下のコマンドを打ち込み、開発中のモジュールの署名の検証を無効にする。 % sn.exe -Vr sample.dll <-- マニフィストを持っているファイル名を指定する(例はsample.dll) ※ AssemblyVersion("1.0.*")にしておくと、ビルドの度にバージョンが変わってしまう為、上記のコマンドをその都度実行する必要がでてきてしまう。その為、開発時はAssemblyVersion("1.0.0.0")としておく。
開発が終了し、最終段階のアセンブリが完成したら、秘密キーを用いて実際の署名作業を行う。 % sn.exe -Rc sample.dll CspContainer
手順7で無効化した署名を再度有効化する。 % sn.exe -Vu sample.dll おすすめ書籍
|