【问题标题】:Setting up resources in separate dll WPF在单独的 dll WPF 中设置资源
【发布时间】:2012-10-19 11:07:05
【问题描述】:

我希望在一个独立的 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,Culture=neutral”或其依赖项之一。系统找不到 指定的文件。

有什么想法吗?

【问题讨论】:

  • 根据我的经验,如果您将资源、图像等保存在不同的项目中,则很难管理。我也认为它没有任何好处。

标签: c# wpf .net-assembly resourcedictionary


【解决方案1】:

我在我的一些项目中做同样的事情,我所做的是将 dll 作为引用添加到我的项目中,然后我使用 pack Uri 但我没有指定扩展名 .dll。我只是使用程序集名称(通常没有 .dll)

Source="pack://application:,,,/GX3StyleResources;component/GX3StyleResources.xaml"

【讨论】:

  • 问题是我在程序集名称的末尾有 .dll。
【解决方案2】:

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

将一个类添加到您的资源程序集文件中,它可以做某事/任何事情 - 不要将其留空,否则在某些情况下它会被优化掉:

public static class Resources
{
    public static void Init()
    {
        Console.Write(string.Empty);
    }
}

然后,在您的应用程序中,先在您的应用程序启动方法中调用 Resources.Init(),然后再进行任何其他操作,以确保加载资源程序集。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    相关资源
    最近更新 更多