publicize を使用したプライベート アクセサの作成
更新 : 2007 年 11 月
コマンド ライン ツールである publicize.exe は、パブリック型を含むアセンブリを生成します。これらのパブリック型は、2 つ目のアセンブリの中にすべてのプライベート型をラップします。publicize を使用して、プライベート型を対象とする単体テストを作成できます。
生成されるアセンブリは、プライベート アクセサとも呼ばれます。プライベート アクセサは IDE からも生成できますが、自動化、スクリプト記述、およびビルドのシナリオでは publicize.exe を代わりに使用できます。
publicize はデリゲートとイベントをサポートしない
テストするアセンブリが、さまざまな種類のプライベート型または内部型を含んでいることがあります。publicize.exe を実行し、アセンブリの名前を渡すと、そのアセンブリのプライベート アクセサが生成されます。生成されるプライベート アクセサには、テスト コードがアセンブリ内のプライベート型にアクセスできるようにするコードが含まれます。ただし、プライベートまたは内部のデリゲートまたはイベントへのアクセスは提供されません。
Publicize.exe ツールの使用
publicize.exe を使用するには、まず Visual Studio 2008 コマンド プロンプトを開きます。これを行うには、[スタート] ボタンをクリックし、[すべてのプログラム] をポイントします。次に [Microsoft Visual Studio 9.0] をポイントし、[Visual Studio Tools] をポイントして、[Visual Studio 2008 コマンド プロンプト] をクリックします。publicize.exe では、次の構文を使用します。
Publicize.exe [オプション] input-assembly
このコマンドは、input-assembly アセンブリ内のすべてのプライベート型をラップします。
オプション
このコマンドには、/target、/delaysign、および /keyfile というオプションがあります。ここでは、これらのオプションについて説明します。
/target
構文 : Publicize.exe /target:[値] input-assembly
/target オプションを指定すると、特定のプラットフォームで実行されるアセンブリが構築され、生成されます。/target には、次の値を指定できます。
Desktop : 標準的な CLR プライベート アクセサを生成します。Desktop は、target オプションの既定値です。
WebSite : Web サイトと互換性があるプライベート アクセサを生成します。
メモ : WebSite オプションは、Visual Studio で [ファイル] メニューの [Web サイト] をクリックして作成した Web サイトのコードをテストする場合にのみ使用します。
Device : スマート デバイスと互換性があるプライベート アクセサを生成します。
/delaysign
構文 : Publicize.exe /delaysign input-assembly
現時点でアセンブリに署名しない場合は、/delaysign オプションを使用します。デジタル署名を後で追加できるように、出力アセンブリに署名用のスペースが予約されます。
/delaysign を使用すると、publicize.exe の実行後に独自のテストを引き続き実行できます。一時的な公開キー トークンが使用され、後でアセンブリに署名できます。
/delaysign オプションを使用する場合は、/keyfile オプションも使用する必要があります。/keyfile オプションで指定したファイルには、公開キーが格納されている必要があります。また、必要に応じて秘密キーを格納することもできます。
/delaysign は、.NET コンパイラのオプションでもあります。詳細については、「厳密な名前付きアセンブリの作成と使用」および「アセンブリへの遅延署名」を参照してください。
/keyfile
Syntax: Publicize.exe /keyfile<キー ファイル> input-assembly
publicize.exe の実行時にアセンブリに署名する場合は、/keyfile オプションを使用します。<キー ファイル> には、暗号化キーが格納されている既存のファイルの名前を指定します。<キー ファイル> に指定できるのは、キー ファイルの絶対パスまたは相対パスです。
/keyfile オプションを使用する場合は、/delaysign オプションも使用できます。/keyfile オプションを使用して /delaysign オプションを使用しない場合は、/keyfile オプションで指定したファイルに公開キーと秘密キーの両方が含まれている必要があります。
/keyfile は、.NET コンパイラのオプションでもあります。詳細については、「厳密な名前付きアセンブリの作成と使用」を参照してください。
例
次のコマンドは、Myassembly.dll 用の標準的なデスクトップ プライベート アクセサを生成します。
Publicize.exe myassembly.dll
次のコマンドは、Web サイト MyWebSite 用のプライベート アクセサを生成します。
Publicize.exe /target:WebSite myassemby.dll
次のコマンドは、Myassembly.dll という厳密な名前のアセンブリの標準的なデスクトップ プライベート アクセサを生成し、署名を後で行うように指定します。
Publicize.exe /delaysign /keyfile<FileWithPublicKey.snk> myassembly.dll
次のコマンドは、スマート デバイスで実行するように構築されたアプリケーションのテスト時に使用するプライベート アクセサを生成します。
Publicize.exe /target:device /keyfile<FileWithKeys.snk> myassembly.dll