2012-01-23 8 views
-1

設定ファイルを使用してコマンドラインからdotfuscator 5を実行しています。これはちょうど来た1つの新しい要件を除いて、大丈夫、多かれ少なかれ動作します。Dotfuscator 5 CE - 署名による名前の変更の除外

は、私が(半分以下ダース)名前変更から除外される必要があり、ボイドのメソッド数が少ないクラスを持っている(名前による反射のメソッドを呼び出すのロータリーシステムのために、聞かないでください...)

署名は(無実を保護するために名前が変更された)void Method(System.Xml.XmlNode xnode, ref System.String str)です。

私の質問は二つある:

  • 私はdotfuscator設定構文でREFパラメータを表現するにはどうすればよいですか?
  • マップファイルで引用されたメソッドの署名を使用しないのはなぜですか?

マップファイルには、これらのメソッドの名前が変更されたときに、<signature>void(System.Xml.XmlNode, string&amp;)</signature>という要素が含まれています。したがって、設定ファイルで指定できるようになると期待します。

<type name="ParentClass" excludetype="false"> 
<method signature="void(System.Xml.XmlNode, string&amp;)"/> 
</type> 

これは動作しません。コマンドラインユーティリティの出力は、設定ファイルが無効であると主張します。

name=".*" regex="true"の場合、すべての型は除きます。私はそれを望んでいない。私はこれがなぜあるのか理解しています - ルールはORで結ばれていますが、私の実際の必要条件を指定する設定ファイルを拒否することによって、私は望んでいないオプションを使用します。

何がありますか?

私はこのことに腹を立て始めているので、私はDotfuscatorのドキュメントがあまり良くないと分かりました。

+1

Downvoters:なぜあなたがダウンしたのか説明してください。 –

答えて

1

メソッドノードに「名前」がないため、設定ファイルが無効です。

特定のメソッドを除外しようとしている場合は、UIを使用して、左側の名前変更 - >除外ツリービューでそのメソッドの横にあるチェックボックスをクリックすると、君は。このルートに進む場合は、まず既存の<type>ノードを削除します。

あなたはそれがその署名でParentClassのいずれかの方法を一致させたい場合は(一つだけあります場合でも)は、XMLが(<Namespace>の正しい値で代用)する必要があります:

<type name="<Namespace>.ParentClass" excludetype="false"> 
    <method name=".*" regex="true" signature="void(System.Xml.XmlNode, string&amp;)"/> 
</type> 

作成したルールでUIを使用して名前の変更 - >除外タブに移動し、右側のカスタムルールツリービューのメソッドノードを右クリックし、[プレビュー]をクリックします。それはあなたが探している方法を強調表示する必要があります。プレビューがクリックされたときのUIの表示例を次に示します。http://files.preemptive.com/Support/CustomRuleRefParam.png

+0

ありがとうございます。私は 'name'属性を含めようとしましたが、私が言及したように、これはクラス内のすべてのメソッドにマッチすることがわかりました。 [manual](http://www.preemptive.com/images/stories/dotfuscator_documentation/Dotfuscator/webframe.html)には、「ルールは論理的に論理和されています」と記載されています。これは私の経験と一致します。[名前]が[何か]であるか、[署名]が[曖昧]であるメソッドがマッチします。これは当てはまりませんか? –

+0

与えられたルール(あなたのケースでは 'type'ノードで表されます)は、そのルールと一致するために必要なものの完全な記述です(要件はANDでまとめられています)。たとえば、 'name ="。* "signature =" void(int、string&) "は、"任意のメソッドと次のシグネチャのマッチング "を意味します。 複数のルールがある場合(ここでは1つのルールのみを記述しています)、**それらの論理和は論理的にORされます(つまり、ルールによって除外されるものがある場合、ルールは除外しなかった) –

+0

ああ。そうですか。 Dotfuscatorをアセンブリで実行した結果を調べたときに誤っている可能性があります(マップファイルとILDASMを使用)。 Visual Studioでは最近、ちょうどその回り道が行われていますので、再度プロセスを慎重に実行してみます。 –

関連する問題