.NETアセンブリのクラスとメソッドを内部化する
-
09-06-2019 - |
質問
複数のアセンブリのセットがあります (1 つのアセンブリは API として使用され、他のアセンブリに依存します)。すべてのアセンブリを 1 つのアセンブリにマージしたいのですが、API アセンブリを除くすべてのアセンブリが外部から見えないようにしたいと考えています。
次に、このアセンブリを Xenocode で難読化します。私が見たところ、Xenocode でアセンブリを内部化することは不可能です。
Microsoft の ILMerge を見たことがありますが、それが私が望むことができるかどうかわかりませんでした。http://research.microsoft.com/~mbarnett/ILMerge.aspx
解決 2
Xenocode がアセンブリを 1 つにマージできることは知っていますが、他の非プライマリ アセンブリを内部化するかどうかはわかりません。
ILMerge で、プライマリ アセンブリを除くすべてのアセンブリを「内部化」する /internalize スイッチを見つけました。かなり便利です!
他のヒント
Microsoft の ILMerge を使用して、DLL を単一の組み立てられたライブラリに内部化しました。ILMerge を使用するための便利な GUI として NuGenUnify があります。見つけられますよ ここ.
を見ることをお勧めします InternalsVisibleTo
属性オン MSDN.
すべてのアセンブリ (API アセンブリを除く) のすべてを次のようにマークできます。 internal
の代わりに public
, 、次にそれらを API アセンブリのみに再表示します。
これを完了すると、ILMerge を使用すると、API クラスのみが表示された単一のアセンブリが得られるはずです。
幾つかある ILMerge の問題, しかし、最適化 + マージ + 難読化を追加すると、ほとんどメリットがなく、非常に複雑な状況が作成される可能性が高いと思います。
アセンブリを 1 つだけ用意し、API だけを公開してみてはいかがでしょうか?
常に単一のアセンブリとして配布している場合は、そのままコンパイルしない理由はありません。コンパイラの最適化からさらに多くのメリットが得られ、コンパイルも高速化されます。