[差し込み]エディター
[差し込み]画面を使用して、チェック機能やインストルメンテーション機能を追加するコードの Dotfuscator による差し込みを構成できます。 この画面には、[インストルメンテーション]タブと[チェック]タブがあります。
また、この画面からはアクセスできませんが、差し込みの動作と、差し込みを有効にするかどうかに影響を与える、全般的な設定と入力アセンブリの設定もあります。
[インストルメンテーション]タブ
[インストルメンテーション]タブでは、Dotfuscator のインストルメンテーション機能を構成する属性の追加、編集、および調査が行えます。
このタブには、入力アセンブリのツリー ビューが表示され、各アセンブリやメソッドを修飾するインストルメンテーション属性(編集可能)が含まれています。
メモ: 新しい構成の場合、インストルメンテーションの差し込みに対する既定の設定は「有効化」になっています。 ただし、遠隔測定は既定では無効になっています。 これらの設定を変更する方法については、全般の差し込みオプションを参照してください。
このタブは 2 つの部分に分かれています。 左側には、入力アセンブリの構造が、個々のアセンブリやメソッドにアノテーションを付けるインストルメンテーション属性も含めて、コード ツリーで表されます。 これらの属性の 1 つを選択すると、その属性のプロパティがタブの右側に表示され、属性の構成が可能になります。
インストルメンテーション属性の定義
構成エディターでは、ソース コードの属性を指定するだけでなく、構成に属性を追加することもできます。 これらの属性は、ソース コードでなく Dotfuscator 構成ファイルに保存されます。 これらの属性は拡張属性と呼ばれています。
拡張属性を追加するには
コード ツリーから、アノテーションを付けたいアセンブリまたはメソッドを選択します。
選択した項目を右クリックし、[属性の追加]を選択します。
使用可能な属性の一覧から適切な属性を選択し、[OK]をクリックします。
この拡張属性は項目の子として追加され、青色の文字で表示されます。 項目のサブツリーを展開し、新しく追加した属性を選択します。
タブの右側に、その属性のプロパティが表示されます。 この表にあるこれらのプロパティを編集することができます。
たとえば、BusinessAttribute
をアセンブリに追加するには、左側のツリー ビューでアセンブリを右クリックし、[属性の追加]を選択して、PreEmptive.Analytics.BusinessAttribute
を選択します。
属性の CompanyName プロパティを構成するには、ツリー ビューからこの属性を選択し、右側のプロパティ ビューで CompanyName エントリを変更します。
拡張属性を編集するには
構成から拡張属性を削除するには、コード ツリー内でその属性を右クリックし、[属性の削除]を選択します。
属性検索フィールド
[インストルメンテーション]タブでは検索機能が有効になっており、インストルメンテーション ツリー ビュー内の項目を探し出すことができます。 たとえば、SetupAttribute を見つけるには、"*Setup*"という文字列(引用符なし)を入力し、[検索]ボタンをクリックします。
in-code インストルメンテーション属性の操作
[インストルメンテーション]タブには、ソース コードで指定されているインストルメンテーション属性も表示されます。 これらの in-code 属性を操作する際には、以下の事項に留意してください。
コード ツリーで、in-code 属性は黒色の文字で表示されます。 拡張属性は青色の文字で表示されます。
in-code 属性を拡張属性でオーバーライドすることができます。 オーバーライドすると、Dotfuscator は in-code 属性を無視し、コード ツリーに表示しなくなります。 代わりに拡張属性が使用されるようになります。 オーバーライドは、次のいずれかの操作を行ったときに発生します。
in-code 属性のプロパティを構成エディターで編集する。 Dotfuscator はソース コードを変更しないため、この操作により、変更された値を持つ拡張属性が作成されます。
拡張属性を、同じ種類の in-code 属性が既にあるアセンブリまたはメソッドに追加する。
in-code 属性をオーバーライドしている拡張属性を削除した場合には、その in-code 属性が再び有効になります。
構成エディターを使用して、in-code 属性を削除することはできません。 in-code 属性を削除するには、ソース コード自体から削除する必要があります。
[チェック]タブ
[チェック]タブでは、チェックを追加、編集、および削除することができます。
このタブには、現在の Dotfuscator 構成ファイルに構成されているすべてのチェックと、アプリケーションのソース コード内のカスタム属性を利用して構成できるすべてのチェックを列挙した表が表示されます。
表の列は次のとおりです。
最初の列には、in-code 属性を使用してチェックを定義している場合にのみ、アイコンが表示されます。
[種類]列は、このチェックで使用可能なチェックの種類を示します。
[説明]列は、このチェックがある入力アセンブリ内の場所を示します。
- この列では、メソッド署名は短縮されており、チェックに複数の場所がある場合は共通の名前空間のみが表示されます。 このようなメソッド署名の完全な、短縮されていない記載を見るには、チェックの説明のツール ヒントを見ます。
構成ファイルへのチェックの追加
チェックを追加するには
作成したいチェックの種類に対応するボタン、[デバッグ チェックの追加]、[改ざんチェックの追加]、[Shelf Life チェックの追加]、または[ルート チェックの追加]のいずれかをクリックします。 この新しいチェックのためのエディターが開きます。
エディターの左側のグリッドで、チェックのプロパティを構成します。 詳細な手順については、プロパティの編集に関するセクションを参照してください。
エディターの右側のコード ツリーで、このチェックを差し込む入力アセンブリ内の場所を選択します。 各場所は、特定のチェックの種類の 1 つのチェックにのみ関連付けることができます。
[OK]をクリックして確認します。表にこのチェック用の行が新しく表示されます。
チェックを編集するには、表内でそのチェックを強調表示し、[編集]ボタンをクリックします。 チェックのエディターが開くので、プロパティを編集したり、場所を変更したりすることができます。
構成からチェックを削除するには、表内でそのチェックを強調表示し、[削除]ボタンをクリックします。
ソース コードに定義されているチェックの操作
[チェック]タブには、ソース コード内にカスタム属性によって定義されているチェックと 構成ファイル内のチェックが両方とも表示されるため、いくつかの留意事項があります。
コード内に定義されたチェックは、構成ファイルのチェックでオーバーライドすることができます。 オーバーライドすると、Dotfuscator により、コード内に定義されたチェックが無視されて、そのチェックの行がチェックの表内に表示されなくなります。 代わりに、構成エディターで作成したチェックが使用されるようになります。 オーバーライドは、次のいずれかの操作を行ったときに発生します。
構成エディターでコード内に定義したチェックについて、プロパティを編集したり場所を追加したりする。 Dotfuscator はソース コードを変更できないため、この操作により、値が変更されたり場所が追加されたりした構成チェックが作成されて、このチェックにより、コード内に定義されたチェックがオーバーライドされます。
構成内のチェックに場所を追加します。この新しい場所には、同じチェックの種類を持つチェックがコード内で既に定義されています。コード内でこの場所に定義されているチェックは、この構成内のチェックによってオーバーライドされます。
コード内に定義されたチェックをオーバーライドした構成内のチェックを削除した場合には、ソース コード内のチェックが再び有効になります。
ソース コード内に定義されているチェックを Dotfuscator 構成エディターで削除することはできません。 ソース コード内に定義されているチェックを削除するには、ソース コード自体から削除する必要があります。
ソース コードを使用してチェックを構成している場合、チェックの表の最初の列にはアイコンが表示されます。
チェックが、構成エディターを使って追加されたものであり、コード内に定義されたチェックをオーバーライドしていない場合には、アイコンは表示されません。
は、ソース コード内に完全に定義されたチェックの場合に表示されます。
は、少なくとも 1 つのコード内チェックが構成内のチェックでオーバーライドされている場合に表示されます。
プロパティの編集
インストルメンテーション属性およびチェックのプロパティを変更するのは通常、簡単です。サポートされているフィールドは、フリー テキストを受け付けたり(ほとんどの文字列プロパティ)、サポートされている値のドロップダウン リストを提供したり、日付の選択を提供したりします。
ただし、一部のプロパティでは、選択したときに[...]アイコンも表示されます。 このアイコンをクリックすると、フィールドに値を設定するための別のエディターが表示されます。 このエディターについては、以下の各サブセクションで説明します。
さらに、各プロパティの意味とそれが制御する動作を説明したプロパティ一覧ページもあります。
[エンドポイントの選択]ダイアログ
SetupAttribute
の StaticEndpoint プロパティで[...]アイコンをクリックすると、次のダイアログが開きます。
このダイアログで、PreEmptive Solutions の定義済みエンドポイントから 1 つを選択したり、独自の URL を指定したりすることができます。 選択を行って[OK]をクリックすると、選択した場所が StaticEndpoint フィールドに表示されます。
所有者の型の選択ダイアログ
ExtendedKeySourceOwner など、ソースとシンクの Owner プロパティには、アプリケーション内の型を指定します。 型を選択するダイアログを起動するには、フィールドの[...]アイコンをクリックします。
GUID ジェネレーター
さまざまな Guid プロパティや、BusinessAttribute
の CompanyKey プロパティで[...]アイコンをクリックすると、そのプロパティの新しい GUID が生成されます。
参照ダイアログ
ShelfLifeCheckAttribute
または SignOfLifeAttribute
の ActivationKeyFile プロパティで[...]アイコンをクリックすると、Shelf Life Activation Key を参照して選択することができます。
同様に、ShelfLifeCheckAttribute
の PrivateKeyFile を参照して選択する場合にも、このダイアログを呼び出すことができます。
新しい Shelf Life トークンの生成
Shelf Life トークンが外部に保存されている Shelf Life チェックを使用する場合、Dotfuscator では新しい Shelf Life トークンを簡単に生成できます。Visual Studio の場合はメニュー バーの[表示]>[Dotfuscator]>[新しい Shelf Life トークンの生成]をクリックし、スタンドアロン Dotfuscator の場合は[ツール]>[Shelf Life トークンの生成]をクリックするだけです。
表示されるダイアログ ボックスで、適切な Shelf Life Activation Key ファイルと、任意で PKCS #12 Private Key ファイルを検索、選択することによって、Shelf Life トークンの追加の検証を提供することができます。 秘密キー ファイルを使用する場合は、[秘密キー ファイルのパスワード]フィールドに正しいパスワードを入力してください。
[有効期限]を設定し、任意で[警告日付]を設定します。
[警告日付]フィールドの隣には[警告日付を使用する]チェック ボックスがあります。
このチェック ボックスは、インストルメンテーション中に ShelfLifeCheckAttribute
を使って警告日付の動作を有効にしなかった場合、あるいは、インストルメンテーション中に有効にしたけれど、提供したい最新の Shelf Life トークンでは無効にしている場合には、オフにしてください。
Shelf Life キー情報が有効であると判断されると、[生成]ボタンが有効になります。 このボタンをクリックすると、Shelf Life でインストルメント化されたアプリケーションで使用できる、新しい Shelf Life トークンが生成されます。 Shelf Life トークン データをクリップボードにコピーするには、[コピー]ボタンをクリックします。
差し込みオプション
差し込みオプションは、Dotfuscator 構成エディターでは、[設定]タブの[オプション]プロパティ ページにあります。 Visual Studio の中では、オプション プロパティ ページは Dotfuscator プロジェクトのプロパティ ダイアログからアクセスできます。 これらのオプションは、「差し込み」サブセクションにあります。
利用できるオプションがいくつかあります。
Analytics バージョン:差し込みに使用する内部の Analytics API を決定します。 通常、PreEmptive Solutions のサポートの指示がない限り、この設定を提供された既定値から変更する必要はありません。
差し込みを有効にする:差し込み処理全体のマスター スイッチとして機能します。 これがオン(はい)の場合、Dotfuscator で構成した差し込み設定と、入力アセンブリに含まれるすべてのインストルメンテーション属性およびチェック属性によって指定されるとおりに、差し込みが実行されます。 これがオフ(いいえ)の場合は、どのような種類の差し込みも行われません。
- 差し込みを無効にしている場合でも、Dotfuscator はアセンブリ レベルの差し込みオプションである、個々の入力アセンブリの[差し込み属性の除去]オプションを使用します。
ランタイムのマージ:Analytics API コードを別個のアセンブリに入れるのではなく、既存の入力アセンブリに差し込むようにします。 このオプションで制御される動作の詳細については、「インストルメンテーションの概要」の Analytics API セクションを参照してください。
分析メッセージの送信:差し込まれたアプリケーションがインストルメンテーションの遠隔測定を送信できるようにします。
セッション、機能、例外、システム メトリックを追跡するには、この設定を有効にする必要があります。
チェックの遠隔測定を設定するためだけにインストルメンテーション属性を使用したい場合は、このオプションを無効にすることもできます。
デバッグ チェック メッセージの送信:差し込まれたアプリケーションがデバッグ チェックからチェックの遠隔測定を送信できるようにします。
- このオプションを無効にした場合でも、デバッグ チェックおよび関連するチェック操作は実行されます。
Shelf Life メッセージの送信:差し込まれたアプリケーションが Shelf Life チェックからチェックの遠隔測定を送信できるようにします。
このオプションを無効にした場合でも、Shelf Life チェックおよび構成されている終了の動作は実行されます。
このオプションは、
SignOfLifeAttribute
によって送信されるメッセージも制御します。
改ざんメッセージの送信:差し込まれたアプリケーションが改ざんチェックからチェックの遠隔測定を送信できるようにします。
- このオプションを無効にした場合でも、改ざんチェックおよび関連するチェック操作は実行されます。
アセンブリ レベルの差し込みオプション
Dotfuscator では、アセンブリのインストルメンテーション属性およびチェック属性の処理を詳細に制御できます。 アセンブリにおいてこれらの属性を使用するのか無視するのか、また保持するのか削除するのかを Dotfuscator に指示することができます。 これらの設定はアセンブリ レベルで適用することができます。
Visual Studio 内では、アセンブリ レベルのオプションは、入力アセンブリにフォーカスがあるときのプロパティ ツール ウィンドウで利用できます。
Dotfuscator 構成エディターでは、アセンブリ レベルのオプションは[入力]タブにあります。
差し込み属性の使用
[差し込み属性の使用]を "True"(既定値)に設定すると、これらの属性を処理し、示されている差し込みをターゲット アセンブリで行うよう、Dotfuscator に指示できます。 インストルメンテーション属性やチェック属性をすべて無視するよう Dotfuscator に指示するには、このプロパティを "False" に設定します。
"False" 設定は、テスト目的の場合や、一連のアセンブリを Dotfuscator で複数回実行しなければならないような高度なシナリオで役に立ちます。
差し込み属性の除去
[差し込み属性の除去]属性を "True"(既定値)に設定すると、ターゲットの出力アセンブリからこれらの属性を削除するよう Dotfuscator に指示できます。 出力アセンブリにこれらの属性を残すよう Dotfuscator に指示するには、このプロパティを "False" に設定します。
"False" 設定は[差し込み属性の使用]オプションの場合と同様、テスト目的の場合や、一連のアセンブリを Dotfuscator で複数回実行しなければならないような高度なシナリオで役に立ちます。
下の表に、これら 2 つのオプションを組み合わせたときの結果と、各組み合わせの用途を示します。
差し込み属性の使用 | 差し込み属性の除去 | メモ |
---|---|---|
True | True | 既定の設定。アセンブリには、そのアセンブリ内に宣言された属性に基づいてコードが差し込まれ、これらの属性は取り除かれます。 |
False | True | アセンブリには、そのアセンブリ内に宣言された属性に基づいてコードは差し込まれず、これらの属性は取り除かれます。この組み合わせは、チェックやインストルメンテーション機能を含んでいないテスト ビルドを作成する場合に有用です。 |
True | False | アセンブリには、そのアセンブリ内に宣言された属性に基づいてコードが差し込まれ、これらの属性は残されます。この組み合わせはお勧めしません。 |
False | False | アセンブリには、そのアセンブリ内で宣言された属性に基づいてコードは差し込まれず、これらの属性は残されます。この組み合わせは、難読化する必要があるが、後続の手順でチェックまたはインストルメンテーション機能の追加が必要になるアセンブリに対して有用です。 |
関連項目:
- チェックの理解
- インストルメンテーションの理解
- チェック属性の一覧
- インストルメンテーション属性の一覧
- Dotfuscator 構成エディターの[設定]タブ
- Visual Studio のプロジェクト プロパティ