[設定]画面は、構成全体の設定を構成するのに使用します。 この画面には、Dotfuscator Community のナビゲーション ツリー内の[設定]を選択すればアクセスできます。 画面のオプションは 6 つのタブ付きビューに分割されていますが、3 つのタブの機能は Dotfuscator Professional でのみ使用できます。
[全般]タブ
このタブでは、Dotfuscator 構成の全般的な設定(出力ディレクトリ、[ビルド出力]パネルの詳細など)を行います。
ディレクトリ
[ディレクトリ]セクションでは、2 つのディレクトリ値を設定できます。パスを手動で入力するか、[参照]ボタンを使って参照して設定できます。
-
一時ディレクトリ:省略可能。Dotfuscator で構成を作成する際に一時ファイルを配置するディレクトリを指定します。指定しない場合は、OS で提供される一時ディレクトリが使用されます。
-
出力先ディレクトリ:必須。変更したアセンブリとパッケージを Dotfuscator で書き込むディレクトリを指定します。 そのディレクトリが存在しない場合は、Dotfuscator によって作成されます。既定値は
${configdir}\Dotfuscated
です。つまり、Dotfuscator 構成ファイルが定義されているディレクトリのサブディレクトリである、Dotfuscated
です。
ビルド構成
[ビルド構成]セクションでは、Dotfuscator ビルド全般に関連する以下のオプションを構成できます。
-
調査のみ実行:このオプションを有効化すると、アセンブリやパッケージが出力されなくなります。 これにより、Dotfuscator 構成の「ドライ ラン」(試行テスト)を実行できると共に、変更したアセンブリを生成しなくても割り当てファイルまたは割り当てレポートを作成できるようになります。
-
デバッグ シンボルの出力:Dotfuscator が、保護されたアセンブリ用に更新されたデバッグ シンボル(PDB ファイル)を作成する方法を制御します。
-
このオプションを有効化すると、入力アセンブリのデバッグ シンボルの形式に一致するデバッグ シンボルを作成します。
-
このオプションを無効化した場合は、入力アセンブリにデバッグ シンボルがあるときでも、出力にはデバッグ シンボルが含まれなくなります。
-
-
ビルド出力の詳細:[ビルド出力]ペインに表示する情報量を選択します。
-
"メッセージを表示しない":通常より少ないビルド情報が表示されます。
-
"既定":通常のビルド情報が表示されます。
-
"詳細な情報を表示する":SDK ツールへの呼び出しの出力など、追加のビルド情報が表示されます。結果を微調整しようとする場合に役立ちます。
-
グローバル難読化の設定
[グローバル難読化の設定]セクションでは、難読化に関連する以下のオプションを構成できます。
-
難読化属性の継承:このオプションを有効化すると、1 つの型に対して使用した難読化属性がその型の派生型にも適用されると共に、1 つのメソッドに対して使用した難読化属性がそれをオーバーライドするメソッドにも適用されます。
-
スマート難読化:このオプションを有効化すると、スマート難読化が使用されます。
-
Ildasm を抑制する:このオプションを有効化すると、すべての出力アセンブリに
SuppressIldasmAttribute
が追加されます。 -
スマート難読化レポート:レポート作成対象とする、スマート難読化からの情報量を選択します。
-
"すべて":警告と警告以外の情報が表示されます。
-
"警告のみ":警告が表示されます。
-
"なし":スマート難読化からのメッセージが表示されなくなります。
-
[プロパティ]タブ
プロパティは、ファイル名やパスが必要なあらゆるところで使用できる、単純な文字列の置換マクロと考えられます。 [プロパティ]画面では、ユーザー定義の名前と値のペアを構成プロパティとして参照、削除、および手動追加することと、外部プロパティを参照することが可能です。 外部プロパティとは、Dotfuscator で定義されているプロパティ(configdir
や appdatadir
など)や、コマンド ライン上で -p
スイッチで渡されたプロパティです。 プロパティは、複数のプロジェクト構成をサポートする難読化ビルド テンプレートを作成する場合に特に役立ちます。 プロパティは、次の構文で参照されます。
プロパティ参照構文
${property_name}
プロパティ参照は大文字と小文字を区別するので、${MyConfigDir}
は ${myConfigdir}
とは異なるプロパティを参照します。 プロパティ参照は、文字どおりに解釈されるため、入れ子にすることはできません。 現在、プロパティ参照は、入力を定義するパス内など、<file>
要素の dir
属性または name
属性の値としてのみ使用できます。
Dotfuscator は次のアルゴリズムを使用して、そのプロパティに関連付けられた値を探します。
- 外部プロパティ リストで値を確認します。
- 見つからない場合は、プロパティと同じ名前の環境変数を確認します。
- それでも見つからない場合は、構成プロパティを確認します。
- それも見つからない場合は、値に空の文字列を使用します。
外部プロパティ
[外部プロパティ]セクションは、Dotfuscator で定義した外部プロパティをリストした読み取り専用テーブルです。 各行で、[プロパティ]列にはプロパティの名前が、[値]列にはプロパティの値が入ります。 Dotfuscator では次の 3 つのプロパティと値が定義されています。
-
applicationdir
。Dotfuscator アプリケーションのファイルが配置されている Dotfuscator のインストール ディレクトリを示します。 -
appdatadir
。Dotfuscator のローカル データ ディレクトリを示します。 -
configdir
。現在の構成ファイルが存在するディレクトリを示します。
構成プロパティ
[構成プロパティ]セクションでは、ビルド処理で利用する任意の追加プロパティの定義および値の代入を行うことができます。 これらのプロパティは、外部プロパティと同じ方法で評価されます。 上の例で、myconfigdir
はプロパティであり、そのプロパティの値が myconfig
です。
[アセンブリ ロード パス]タブ
Dotfuscator では、構成をビルドする際、入力アセンブリによって参照される型の情報を知るために、参照されるアセンブリを読み込む必要があります。 Dotfuscator では通常、これらのアセンブリを検出する際に他の .NET ツールと同じ規則を使用します。
また、参照されるアセンブリを検出するための独自の場所を指定することもできます。 つまり、これらの場所を構成に追加しなくても、サード パーティ製のアセンブリを参照する Dotfuscator 構成をビルドできるということです。
既定値の検索規則では参照されるアセンブリが見つからない場合のために、検索するディレクトリを追加指定する手段が用意されています。Dotfuscator はアルゴリズムの最終ステップとして、これらのディレクトリを指定された順序で検索します。ただし、[最初に検索]チェック ボックスをオンにした場合は、Dotfuscator により、その標準検索が適用される前にロード パスが検索されます。
このタブのエディターを使用すると、構成でユーザーが定義したアセンブリ ロード パスを編集することができます。 ツール バーから、ディレクトリの追加と削除、既存ディレクトリの編集、ディレクトリを検索する順序の変更が行えます。 [アセンブリ ロード パスの追加]ボタンをクリックすると、このウィンドウが表示されます。
パスを指定したら[OK]をクリックします。 このパスが[ユーザー定義アセンブリ ロード パス]ウィンドウに表示されます。
[最初に検索]チェック ボックスをオンにすると、Dotfuscator はその標準検索を適用する前にロード パスを検索します。 チェックをオフにすると、Dotfuscator はその標準検索を適用した後にのみロード パスを検索します。
[機能割り当て文字列]タブ
Dotfuscator は、ObfuscationAttribute
の Feature プロパティ内で使用されるさまざまな文字列を宣言による難読化の一環として認識します。
-
"renaming"
は、その属性が Dotfuscator の名前の変更機能に関する指示を指定するものであることを、Dotfuscator に示します。-
"all"
と"default"
は"renaming"
のエイリアスです。
-
[機能割り当て文字列]タブでは、ツールバーのボタンを使用して、Dotfuscator が認識する追加文字列を追加、編集、および削除することができます。 追加ボタンをクリックすると、サポートされている Dotfuscator 機能に対して機能文字列を割り当てることができるダイアログが表示されます。
(追加した)機能割り当て文字列を選択すると、編集ボタンと削除ボタンがアクティブになります。 編集ボタンをクリックすると、サポートされている Dotfuscator 機能に対して割り当てている機能文字列を編集することができるダイアログが表示されます。
上のスクリーンショットの Dotfuscator 構成において、文字列 "testmode"
は、Dotfuscator の名前変更機能に関する指示を指定する属性であることを Dotfuscator に示しています。 次の 2 つのコードは等価です。
"renaming"
機能文字列の使用:
[System.Reflection.Obfuscation(Exclude=true, Feature="renaming")]
public void CalledFromReflection(int someValue) {
"testmode"
割り当て文字列の使用:
[System.Reflection.Obfuscation(Exclude=true, Feature="testmode")]
public void CalledFromReflection(int someValue) {
Dotfuscator Community では、名前の変更が利用可能な唯一の機能です。 Dotfuscator Professional では、追加の難読化機能がサポートされているため、割り当て文字列に対する追加の意味も使用できます。
[ビルド イベント]タブ
Dotfuscator Professional では、任意の Windows コマンドを Dotfuscator の処理の前および後に実行するように Dotfuscator を構成できます。 これは、Dotfuscator をビルド パイプラインに統合する場合に役立ちます。
この機能は Dotfuscator Community では使用できないため、このタブには機能が Professional 専用であることが示されます。
[署名]タブ
Dotfuscator が厳密名の入力アセンブリを処理すると、署名情報が出力アセンブリに含まれなくなります。 Dotfuscator Professional では、このようなタイプのアセンブリに自動的に再署名する機能が用意されています。
この機能は Dotfuscator Community では使用できないため、このタブには機能が Professional 専用であることが示されます。