難読化/マージされたアセンブリでは機能しないため、PostSharp の使用を放棄する必要があります。少なくとも、それを機能させる方法がわかりません (アセンブリが難読化されている場合、アプリの起動時にクラッシュします)
アプリでいくつかのメソッドをインターセプトする必要があります (元のメソッドの代わりに特別なコードを呼び出す - OnMethodInvocationAspect)
何かアドバイスはありますか?
4 に答える
PostSharp は ILMerge をある程度サポートしています。http://www.postsharp.org/blog/postsharp-and-ilmergeを参照してください。しかし、難読化されたアセンブリには問題があります。
アスペクトはビルド時にシリアライズされるため、アスペクト タイプが難読化されている場合はデシリアライズできません。解決策は、シリアル化可能な型を難読化しないことです。もう 1 つの解決策は、アスペクトをシリアル化しないことです (PostSharp 2.0 の AspectConfigurationAttribute.SerializerType を参照し、シリアライザー MsilAspectSerializer を使用します)。
ジェネリック メソッドとジェネリック型のメソッドにアスペクトが適用されると問題が発生します (理由は、この場合、CLR のバグを回避するために PostSharp がメソッド名に基づいてリフレクションを使用するためです)。
NCopは、Post Sharp
Sheep に触発された .NET プラットフォーム用の複合アスペクト フレームワークです。 Aspectは、AspectJ に触発された .NET プラットフォーム用の代替オープン ソース AOP ツールです。
アスペクト指向プログラミングは、プログラム変換の特殊なケースです。ツールを使用してプログラムの変換を適用できれば、AOP を簡単に実行できます。
当社の DMS Software Reengineering Toolkit は、C、C++、Java、COBOL、さらには C#4.0 など、多くの実際の言語を処理するプログラム変換エンジンです。
詳細については、DMSを使用したアスペクト指向プログラミングを参照してください。
Spring.NET には、実行時に織り込まれる AOP 機能があるため、難読化されたアセンブリで動作するはずです。
http://www.springframework.net/
ドキュメンテーション:
http://www.springframework.net/doc-latest/reference/html/aop.html