XAML 解析异常 - 可以在应用程序的调试版本中找到附加的 属性,但在 release/installed 版本中找不到
XAML parse exception - can find attached property in the debug version of the app, but not in release/installed version
我收到了一个附件 属性 喜欢:
namespace Project.Controls.MyControl
{
public static class Transform
{
public static readonly DependencyProperty RelativeOffsetXProperty = DependencyProperty.RegisterAttached(
"RelativeOffsetX",
typeof(double),
typeof(Transform),
new PropertyMetadata(
default(double),
OnRelativeOffsetXChanged));
// ...
}
}
用法如下:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Project.Controls.MyControl">
<Style TargetType="{x:Type local:MyControl}">
<Style.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Controls/MyControl/IndexItemStyle.xaml" />
<ResourceDictionary Source="pack://application:,,,/Controls/MyControl/ArrowButtonStyle.xaml" />
<ResourceDictionary Source="pack://application:,,,/Controls/MyControl/MyControlTemplate.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Style.Resources>
<!-- more code -->
<Setter Property="IncreaseInAnimation">
<Setter.Value>
<Storyboard>
<!-- more code -->
<DoubleAnimation BeginTime="0:0:0"
FillBehavior="HoldEnd"
Storyboard.TargetProperty="(local:Transform.RelativeOffsetX)"
From="1"
To="0"
Duration="0:0:0.3" />
</Storyboard>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
这在调试时效果很好,没有问题。但是在安装应用程序的生产版本时,它在启动时崩溃并出现以下异常:
Type reference cannot find type named '{clr-namespace:Project.Controls.MyControl;assembly=Project, Version=X.X.X.0, Culture=neutral, PublicKeyToken=XXXX}Transform'
有没有人知道是什么原因导致的或一些关于如何调试它的提示?这个错误完全没有意义,尤其是在调试中一切正常。
注意:一切都在同一个程序集中。
原来这个问题与WPF无关。我们使用的混淆器只是优化了这个 class 。解决方案是将此文件从混淆中排除。
我收到了一个附件 属性 喜欢:
namespace Project.Controls.MyControl
{
public static class Transform
{
public static readonly DependencyProperty RelativeOffsetXProperty = DependencyProperty.RegisterAttached(
"RelativeOffsetX",
typeof(double),
typeof(Transform),
new PropertyMetadata(
default(double),
OnRelativeOffsetXChanged));
// ...
}
}
用法如下:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Project.Controls.MyControl">
<Style TargetType="{x:Type local:MyControl}">
<Style.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Controls/MyControl/IndexItemStyle.xaml" />
<ResourceDictionary Source="pack://application:,,,/Controls/MyControl/ArrowButtonStyle.xaml" />
<ResourceDictionary Source="pack://application:,,,/Controls/MyControl/MyControlTemplate.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Style.Resources>
<!-- more code -->
<Setter Property="IncreaseInAnimation">
<Setter.Value>
<Storyboard>
<!-- more code -->
<DoubleAnimation BeginTime="0:0:0"
FillBehavior="HoldEnd"
Storyboard.TargetProperty="(local:Transform.RelativeOffsetX)"
From="1"
To="0"
Duration="0:0:0.3" />
</Storyboard>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
这在调试时效果很好,没有问题。但是在安装应用程序的生产版本时,它在启动时崩溃并出现以下异常:
Type reference cannot find type named '{clr-namespace:Project.Controls.MyControl;assembly=Project, Version=X.X.X.0, Culture=neutral, PublicKeyToken=XXXX}Transform'
有没有人知道是什么原因导致的或一些关于如何调试它的提示?这个错误完全没有意义,尤其是在调试中一切正常。
注意:一切都在同一个程序集中。
原来这个问题与WPF无关。我们使用的混淆器只是优化了这个 class 。解决方案是将此文件从混淆中排除。