Redgate は少し前にSmart Assemblyを買収しました。これは、私がこれを行う必要がある場合に検討するものです。
少し前に、コードの難読化/暗号化を検討するために CodeViel を試し、ある程度の成功を収めました。これを行うことに真剣に取り組んでいる場合、アセンブリを一方の端にドロップして、保護されたアセンブリを飛び出すほど簡単ではないと思います。内部でのみ使用するコードの部分 (名前空間、クラス、メソッド、フィールド、プロパティ、構造体、イベント、およびリソース) と、他のリソースやライブラリに公開する必要がある部分を考慮する必要があります。私が見ていたケースでは、暗号化 (またはネイティブ コンパイルを使用) していくつかのメソッドの実装を非表示にすることができましたが、クラス定義 (名前、メソッド、プロパティはそのまま) を残しました。場合によっては、他のライブラリが必要とする単純な POCO オブジェクトしか含まれていないため、名前空間全体をそのままにしておきました。
どの戦略をどこで使用するか、逆コンパイル/リバースエンジニアリングを困難にするために難読化できる内部構造については、ケースバイケースで注意が必要なようです。それで十分です。他のケースでは、暗号化/ネイティブ コンパイルを使用して、メソッドの実装を単純に非表示にすることができます。また、アセンブリの一部がまったく触れられないように除外している場合もあります。これらのプログラムのほとんどは、開始できるいくつかの推奨されるデフォルトとオプションを提供しますが、コア IP を保護しながらエンド ユーザーを制限しない結果が得られるまで、これらを微調整および変更する必要があります。