Dotfuscator におけるライブラリとは、同じ Dotfuscator 構成内の入力に含まれていない、他のコンポーネントから参照されるアセンブリです。
ライブラリ モードは、アセンブリ単位のオプションで、そのアセンブリの外部からアクセスされる可能性のあるものについては、名前の変更も除去も行わないことを Dotfuscator に指示します。
入力アセンブリにライブラリ モードを設定しない場合は、そのアセンブリをスタンドアロン アプリケーションとして、または他の入力アセンブリからのみ参照されるものとして扱います。 名前の変更や不要コードの除去は、ライブラリ モードで実行しないアセンブリに対して、難読化の度合いがより高くなります。
ライブラリ モードは、すべての入力アセンブリの既定値で有効になっています。 結果として、アプリケーションは名前の変更処理後もおそらく動作するでしょう。 その一方でユーザーは、自分のアプリケーションのごく一部しか名前が変更されていないと心配するかもしれません。 必要な場合、ライブラリ モードをオフにすれば、Dotfuscator でさらに多くの名前を変更できるようになります。
構成
構成エディターでライブラリ モードを設定します。
ライブラリ モードの効果の詳細
有効にした場合
-
名前の変更
- パブリック クラスの名前と、入れ子になったパブリック クラスの名前は変更されません。 これらのクラスのメンバー(フィールドおよびメソッド)のアクセス属性が public、family、famorassem である場合も、名前は変更されません。
- さらに、アクセス指定子にかかわらず、仮想メソッドの名前も変更されません。 これによって、ライブラリのクライアント側ではプライベートな仮想メソッドを必要に応じてオーバーライドできるようになります。
- 上記の規則によって暗黙に適用される対象除外とともに、名前の変更に関するユーザー指定のカスタム対象除外が適用されます。
- プロパティとイベントのメタデータは、常に維持されます。
-
除去
- パブリック クラスは、静的分析が不要と判断しても取り除かれません。
- パブリック クラスのフィールドは、これらのアクセス属性が public、family、または famorassem である場合も取り除かれません。
- パブリック クラスのメソッドは、これらのアクセス属性が public、family、または famorassem である場合も取り除かれません。 さらに、このようなメソッドはエントリ ポイントとして処理されます。その後に呼び出しツリーおよび呼び出し先メソッドが続きますが、これらのメソッドもすべて除去から免れます。
無効にした場合
-
名前の変更
- アプリケーションの外部のクラス(つまり、Dotfuscator の処理に含まれないアセンブリのクラス)をオーバーライドするメソッドを除いて、すべての名前が変更されます。
- 名前の変更に関するユーザー指定のカスタム対象除外も適用されます。
- プロパティとイベントのメタデータは、アプリケーションの実行に不要なため取り除かれます。
-
除去
- 特に、対象選択されているクラス、メソッド、フィールドは除去されません。
- すべてのトリガー メソッドおよびフィールドは除去されません。
- 名前の変更から除外されるすべてのクラス、メンバー、およびフィールドも除去の対象から外されます。
- それ以外の、対象となる一部のクラス、フィールド、またはメソッドから到達できないすべてのクラス、フィールド、メソッドは除去されます。