C# Dotfuscator WP7版本和枚举扩展:友谊不起作用

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.

在我们的应用程序中,我们对Enum进行了扩展

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")]