Eazfuscator.NET (アセンブリ レベル) で "Constant Literals Pruning" を無効にしたいと考えています。これはどのように可能ですか?
背景: カスタム属性コンストラクターで列挙型を使用します。列挙型を含むアセンブリを参照しないアセンブリに属性クラスがあるため、コンストラクター パラメーターの型はオブジェクトです。
難読化前:
[MyAttribute(MyEnum.Value3)]
public class MyClass
{
}
難読化後 (逆コンパイル):
[MyAttribute(2)]
public class MyAttribute : Attribute
{
}
属性のコンストラクターで、値を Enum にキャストします。これにより、難読化されたアセンブリで例外が生成されますが、難読化されていないバリアントでは生成されません。
public class MyAttribute : Attribute
{
public MyAttribute(object value)
{
var x = (Enum) value; // this throws an InvalidCastException after obfuscation
}
}