我想在一个独立的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”或其依赖项之一。系统找不到 指定的文件。
任何想法?
答案 0 :(得分:5)
我在一些项目中也这样做,我所做的是将dll作为参考添加到我的项目中,然后我使用包Uri,但我没有指定扩展名.dll。我只使用程序集名称(通常没有.dll)
Source="pack://application:,,,/GX3StyleResources;component/GX3StyleResources.xaml"
答案 1 :(得分:0)
我之前也遇到过这个问题。如果你从未在实际的C#代码中实际引用该程序集中的任何内容,有时(我不能确定的标准)编译器/运行时/两者的某种组合只是不加载或复制程序集。 / p>
将一个类添加到资源程序集文件中,该文件执行SOMETHING / any - 不要将其留空,否则在某些情况下它会被优化:
public static class Resources
{
public static void Init()
{
Console.Write(string.Empty);
}
}
然后,从您的应用程序中,先在App启动方法中调用Resources.Init(),然后再确保加载资源程序集。
这是一个肮脏的肮脏的黑客,但它的确有效。