【问题标题】:Xamarin c# xaml obfuscation data binding conflictXamarin c# xaml混淆数据绑定冲突
【发布时间】:2023-04-03 00:55:01
【问题描述】:

我正在使用 xamarin 表单开发一个 xamarin 应用程序。
我在 xaml 文件中有一个按钮,在 c# 中有一个 onclick 函数。

XAML

<Button Content="Button!" Click="OnButtonClick"  />

后面的代码

void OnButtonClick(object sender, EventArgs e)
{
   //some logic.
}

在混淆之前,应用程序运行良好。
但经过混淆处理后,
在 C# 中,函数名称 (OnButtonClick) 被混淆
在 xaml 中,名称 (OnButtonClick) 保持不变。

由于这种冲突,应用程序会抛出错误。
开发工具 视觉工作室 2015
Dotfuscator 社区版
xamarin 4.0.4.4

【问题讨论】:

    标签: c# xaml xamarin.forms obfuscation dotfuscator


    【解决方案1】:

    MS Docs 中有一个ObfuscationAttribute,您可以访问

    [ObfuscationAttribute(Exclude=true)]
    void OnButtonClick(object sender, EventArgs e)
    {
       //some logic.
    }
    

    【讨论】:

    • 这是一个不错的选择。 (混淆属性)。但是,这不适用于 PCL 。我可以在 Android Project 中使用它,但不能在 PCL 中使用。谢谢:微笑:
    【解决方案2】:

    在大多数情况下,XAML 将被正确重命名。不过,我们最近发现了一个错误,即 Xamarin 使用不寻常的版本字符串生成 XAML/XML,而 Dotfuscator 不处理它。我们正在计划一个修复程序,但在发布带有 Dotfuscator CE 修复程序的新版本 Visual Studio 之前它不会可用。 (如果您愿意,我们的下一个 Pro 版本将提供此修复程序。)要解决此问题,您可以exclude the method from renaming

    此外,您的 XAML 语法似乎有误 - 我认为应该是 Clicked=,而不是 Click=

    全面披露:我为 PreEmptive Solutions 工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      相关资源
      最近更新 更多