C# Dotfuscator WP7版本和枚举扩展:友谊不起作用
在我们的应用程序中,我们对Enum进行了扩展C# Dotfuscator WP7版本和枚举扩展:友谊不起作用,c#,windows-phone-7.1,dotfuscator,class-extensions,C#,Windows Phone 7.1,Dotfuscator,Class Extensions,在我们的应用程序中,我们对Enum进行了扩展 namespace System { /// <summary> /// Contains extention methods for emuns. /// </summary> public static class EnumExtention { /// <summary> /// Check is value has flag.
namespace System
{
/// <summary>
/// Contains extention methods for emuns.
/// </summary>
public static class EnumExtention
{
/// <summary>
/// Check is value has flag.
/// </summary>
/// <param name="value">Checked value</param>
/// <param name="checkedFlag">Checked flag.</param>
/// <returns>True if enum contains specified flag. Otherwise false</returns>
public static bool HasFlag(this Enum value, Enum checkedFlag)
{
ulong num = Convert.ToUInt64(checkedFlag);
ulong num2 = Convert.ToUInt64(value);
return (num2 & num) == num;
}
}
}
在构建发布模式后,所有工作都很好,我们得到了以下结果:
“_trueis:true和_falseis:false”
但在Dotfuscator编写代码后,我们得到以下信息:
“哎呀!MethodNotFoundException”
所有功能都设置为“是”
Dotfuscator版本:PreEmptive ver4.9.7000 WindowsPhoneEdition
分机出了什么问题
顺便说一句,我的英语很抱歉。免责声明:我的体验是桌面版的dotfuscator,而不是手机版 Dotfuscator可能决定在引用枚举的任何地方使用等效常量值替换枚举定义,从而消除对枚举类型的需要 尝试使用Dotfuscator设置使枚举免于混淆,或在枚举上使用以下属性:
[Obfuscation(Exclude=true, ApplyToMembers=true, StripAfterObfuscation=true, Feature="renaming"]
[Obfuscation(Exclude=false, ApplyToMembers=true, StripAfterObfuscation=true, Feature="conditionalinclude")]
…如果这样做有效,请尝试仅使用第二个属性来允许重命名但不允许删除
模糊处理后,检查枚举类型是否仍然存在,以及dotfuscator是否正在执行预期的操作。异常的
StackTrace
属性是什么?-我知道它会被混淆,但它可能会提示它认为缺少的方法。是的,它解决了问题。即使只使用第二个属性。谢谢。也许您知道一些关于模糊属性的有用文章。请发送电子邮件的链接(stasabrosimov@gmail.com)或者将此留在评论中。:)很高兴它奏效了。这些属性是.NET framework的一部分,因为它们设计用于任何模糊处理程序。看见每个工具都可以按照自己的意愿自由解释它们。难点在于Exclude属性,因为dotfuscator只有在设置正确的情况下才会遵守该属性。必须根据设置的要素字符串的不同,对其进行不同的设置。我有一个dotfuscator需要的列表,我会努力找到它。
[Obfuscation(Exclude=true, ApplyToMembers=true, StripAfterObfuscation=true, Feature="renaming"]
[Obfuscation(Exclude=false, ApplyToMembers=true, StripAfterObfuscation=true, Feature="conditionalinclude")]