C# 在单独的dll WPF中设置资源

C# 在单独的dll WPF中设置资源,c#,wpf,.net-assembly,resourcedictionary,C#,Wpf,.net Assembly,Resourcedictionary,我希望在一个独立的dll中包含一组样式,可以从许多不同的WOF类引用这些样式来定义通用样式 我已经创建了独立的dll并尝试引用它,但遇到了问题 以下是独立dll的代码: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&

我希望在一个独立的dll中包含一组样式,可以从许多不同的WOF类引用这些样式来定义通用样式

我已经创建了独立的dll并尝试引用它,但遇到了问题

以下是独立dll的代码:

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

        <Style x:Key="myStyle" TargetType="Button">
            <Setter Property="Background" Value="Orange" />
            <Setter Property="FontStyle" Value="Italic" />
            <Setter Property="Padding" Value="8,4" />
            <Setter Property="Margin" Value="4" />
        </Style>

    <!-- store here your styles -->
</ResourceDictionary> 

这里是我试图引用它的地方:

<src:GX3ClientPlugin.Resources>
    <ResourceDictionary Source="pack://application:,,,/GX3StyleResources.dll;component/GX3StyleResources.xaml" />
</src:GX3ClientPlugin.Resources>

运行时,我会遇到以下异常:

无法加载文件或程序集“GX3StyleResources.dll,区域性=中性”或其依赖项之一。系统找不到 指定的文件


有什么想法吗?

我以前也遇到过这个问题。如果您从未在实际的C#代码中引用该程序集中的任何内容,那么有时(我一生中无法确定的标准)编译器/运行时/两者的某些组合不会加载或复制您的程序集

向资源程序集文件中添加一个类,该类可以执行某些操作/任何操作-不要将其保留为空,否则在某些情况下会得到优化:

public static class Resources
{
    public static void Init()
    {
        Console.Write(string.Empty);
    }
}
然后,在应用程序中,在执行任何其他操作之前,在应用程序启动方法中调用Resources.Init(),以确保加载资源程序集


这是一个肮脏的黑客攻击,但它是有效的。

我在我的一些项目中也这样做,我要做的是将dll作为引用添加到我的项目中,然后使用包Uri,但我不指定扩展名.dll。我只使用程序集名称(通常不使用h.dll)


根据我的经验,如果您将资源、图像等保存在不同的项目中,则很难进行管理。我还认为它即使没有好处也没有什么好处。问题是我在程序集名称的末尾有.dll。
Source="pack://application:,,,/GX3StyleResources;component/GX3StyleResources.xaml"