ConfuserEx icon indicating copy to clipboard operation
ConfuserEx copied to clipboard

Application doesn't work when resource directory contains relative resource

Open ryanroe opened this issue 9 months ago • 0 comments

  • ConfuserEx Version: 1.6.0+447341964f
  • Target Framework: .Net Framework 4.6
  • Operating System: Windows 11 Pro

Steps to Reproduce:

  1. create an empty WPF Application( .Net Framework )
  2. make it Console Application (to see the error info after obfuscated)
  3. create as the following image resource_test

contents of Color.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <SolidColorBrush x:Key="PrimaryBrush" Color="Red" />
</ResourceDictionary>

contents of Skin.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="./Color.xaml" />
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

contents of App.xaml

<Application
    x:Class="WpfRelativeResourceTest.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfRelativeResourceTest"
    StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="./Themes/Skin.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

contents of MainWindow.xaml

<Window
    x:Class="WpfRelativeResourceTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:WpfRelativeResourceTest"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    mc:Ignorable="d">
    <Grid Background="{DynamicResource PrimaryBrush}" />
</Window>
  1. obfuscate this with only rename feature on

	<rule pattern="true" inherit="false">
		<protection id="rename" />
	</rule>
	<rule pattern="namespace('WpfRelativeResourceTest') and name('App')" inherit="false">
		<protection id="rename" action="remove" />
	</rule>
  1. app throws exception (can't find themes/color.xaml)

ryanroe avatar May 21 '24 02:05 ryanroe