nuget 中的 UWP 样式和主题找不到资源文件

UWP styles and themes in a nuget cannot find resource file

我有一个 UWP 项目和一个用于主题词典的 class 库和一些控件默认样式全部合并到一个名为 "Themes.xaml" 的文件中,我引用该项目并将其简单地导入 "app.xaml" 像这样:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="GI.UI/Themes.xaml" />
            <ResourceDictionary Source="/Styles/_FontSizes.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

它按预期工作,但是当我创建一个具有相同样式项目的 nuget 并改用它时,项目会抛出一个异常,它无法在此路径中找到 Themes.xaml。

更新 1

我还尝试为 ResourceDictionary "Themes.xaml" 添加一个带有 "InitializeComponent()" 的空代码隐藏文件,当我按照下面显示的方式导入时它工作得很好,但它再次只在我引用时工作项目,不适用于 nuget。

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <theme:Themes />
            <ResourceDictionary Source="/Styles/_FontSizes.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

(Themes.xaml.cs)资源字典代码在后面。

using Windows.UI.Xaml;

namespace GI.UI
{
    public sealed partial class Themes : ResourceDictionary
    {
        public Themes() => InitializeComponent();
    }
}

Themes.xaml

<ResourceDictionary
x:Class="GI.UI.Themes"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:BelowWindows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract, 7)"
xmlns:Windows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

<!-- some styles and themes here -->
</ResourceDictionary>

更新 2

注意到 xaml 编译器的异常警告。

所以现在我有了那个 nuget 项目的代码以及几乎是空的示例应用程序,可以随意从项目中引用,然后也尝试从 nuget 包中引用。

项目urlhttps://github.com/touseefbsb/UWP_Styles_Nuget

nuget 包 : https://www.nuget.org/packages/GI.UI/0.0.16

我还在用于创建包的项目中提供了 nusepc 文件。

备注

当我创建 nuget 文件时,我收到以下警告

你可以尝试这样使用:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="ms-appx:///GI.Standards.Theme/Theme.xaml" />
            <ResourceDictionary Source="/Styles/_FontSizes.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

使用 ms-appx 引用来自应用程序包的文件。

Source="ms-appx:///LibraryName/Folder/File.xaml"

我能够按照如下所示的文件夹结构解决问题:

然后按以下方式编辑 nuspec 文件: