Декларативное запутывание в формах Xamarin с ConfuserEx
Я создаю приложение для Android, используя Xamarin. Формы, которые я запутываю в ConfuserEx. Я хотел использовать декларативное запутывание, как в этом примере, чтобы я мог изменить свойства запутывания для каждого из моих классов.
Однако пространство имен System.Reflection в Xamarin.Forms не распознает класс System.Reflection.ObfuscationAttribute. Нужно ли использовать другой пакет NuGet или я что-то упустил?
Иначе, есть ли способ включить или исключить функции запутывания в разных классах по-разному?
1 ответ
ConfuserEx
только смотрит на имя атрибута:
if (ca.TypeFullName != "System.Reflection.ObfuscationAttribute")
Так что я бы просто создал System.Reflection.ObfuscationAttribute
класс в PCL (Xamarin.Forms
) сам проект.
т.е.
using System.Runtime.InteropServices;
namespace System.Reflection
{
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Parameter | AttributeTargets.Delegate, AllowMultiple = true, Inherited = false), ComVisible(true)]
public sealed class ObfuscationAttribute : Attribute
{
//
// Fields
//
private bool m_strip = true;
private bool m_exclude = true;
private bool m_applyToMembers = true;
private string m_feature = "all";
//
// Properties
//
public bool ApplyToMembers
{
get
{
return this.m_applyToMembers;
}
set
{
this.m_applyToMembers = value;
}
}
public bool Exclude
{
get
{
return this.m_exclude;
}
set
{
this.m_exclude = value;
}
}
public string Feature
{
get
{
return this.m_feature;
}
set
{
this.m_feature = value;
}
}
public bool StripAfterObfuscation
{
get
{
return this.m_strip;
}
set
{
this.m_strip = value;
}
}
}
}