リンク先のツールは、基本的にアプリケーション全体をネイティブ コードにコンパイルします。これは、Reflection などを実際に「シャットダウン」するのではなく、アプリケーションをまったく別のものに変えるだけであり、もはやバイトコードではなく、技術的には .NET アセンブリでもありません。
完全に信頼された呼び出し元は、常に.NET アセンブリとその内部のすべてに対してリフレクションを使用できます。(a) 十分な忍耐力と決意があれば誰でも難読化を解除できる難読化、または (b)あらゆる種類のリフレクション (および他の多くの便利な機能) を防ぐネイティブ コードにコンパイルすることを除けば、これを防ぐことはできません。特定のアセンブリに制限することはできません。
はReflectionPermissionAttribute
、他の回答の1つとは反対に、発信者がコードを反映するのを妨げません。むしろ、そのコードからReflection API へのアクセスを制御します。ここでは何の役にも立ちません。
とにかく、コードやクラス構造を非表示にすることがなぜそれほど重要なのですか? NSA で働いている場合を除き、ほとんどのコードはそれほど価値がなく、秘密でもありません。ほとんどのアプリケーションは、十分な時間とリソースがあれば、簡単にリバース エンジニアリングできます。現実的には、攻撃者または剽窃者は、Reflector からコードをコピーしたり、Reflection を使用して API を発見したりしても、ほとんど得られません。
私は自分自身のことしか話せないと思いますが、クールな機能を実装するか、内部コードを保護するために投資するために 1 日自由に使えるとすれば、実際に価値を付加する新しい機能に常に取り組みます。