2

我正在尝试构建我办公室的其他工程师可以使用的样式和控件组件。例如,我有一个派生自 WPFToolKit 的 DoubleUpDown 控件的类型 (MSpinner)。我也有一套用于这个 MSpinner 控件的样式。

在测试可执行文件中,我使用此处详述的技术来访问资源,我也遵循该技术来创建资源程序集。

我还在资源库上使用来自 NuGet 的 Costura.Fody 程序集嵌入工具,以便我可以将 WPFToolKit 程序集嵌入到我的资源库程序集中。

我的资源库程序集构建得很好。然后,我继续使用我的资源库程序集作为新的测试 WPF 可执行文件中的参考。

我的用法如下。

<Window x:Class="UIPart.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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:ignore="http://www.galasoft.ch/ignore"
        xmlns:controls="clr-namespace:MyResources.Controls;assembly=MyResources"
        mc:Ignorable="d ignore"
        Height="300"
        Width="300"
        Title="MVVM Light Application"
        DataContext="{Binding Main, Source={StaticResource Locator}}">

    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Skins/MainSkin.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>

    <Grid x:Name="LayoutRoot">

        <controls:MSpinner/>

    </Grid>
</Window>

但是,当我编译可执行文件时,出现以下错误。

严重性代码描述项目文件行抑制状态错误未知的构建错误,'无法解析对程序集'Xceed.Wpf.Toolkit,版本= 2.7.0.0,文化=中性,PublicKeyToken = 3e4669d2f30244f4'的依赖,因为它尚未预加载。使用 ReflectionOnly API 时,必须通过 ReflectionOnlyAssemblyResolve 事件预加载或按需加载依赖程序集。第 24 行位置 10。UIPart C:\Users\heyyouthere\Documents\Visual Studio 2015\Projects\ResourceDictionaryExample\UIPart\MainWindow.xaml 24

我在这里的第一个想法是 Costura.Fody 没有做好它的工作并且没有嵌入 WPF.ToolKit 程序集,但实际上,根据生成的资源库程序集的字节大小,当 Costura 时确实更大.Fody 的嵌入被执行。

然后我想继续并在可执行文件中引用 WPFToolKit 本身,这听起来有点多余,当然,但为什么不呢。所以我从 NuGet 安装了它,结果错误消失了,一切正常。

但是,这样做对我来说不是解决方案。所有资源和这些资源的所有依赖项都需要合并到我的资源库中,包括 WPFToolkit,我认为这是成功的。

我的问题是为什么大会没有解决?是否有一些签名不匹配?是否在磁盘上明确寻找 Xceed.Wpf.Toolkit.dll 文件?多亏了 Fody,Xceed.Wpf.Toolkit.dll 中定义的类型不是嵌入到我的资源库中了吗?

4

0 回答 0