仅资源DLL在C#中,无法访问资源

时间:2015-12-15 22:03:47

标签: c# wpf

我有几个应该使用相同资源的C#项目。因此,我使用了创建仅提供资源的公共资源DLL的方法。

作为本地化的所有字符串的资源首先在其中一个项目上,并且该项目使用其本地资源没有问题。当我将资源移动到DLL时,问题就开始了。

我是怎么做到的:

我创建了一个名为 Common 的类库。 在Common项目下我有 resources.resx (在属性下)我有所有字符串,我将Access修饰符设置为 public

在我的项目中,我引用了Common项目。

我正在尝试从两个不同的位置使用这些资源: 1.CS文件 2.来自XAML。

在我正在做的.CS文件中:

m_ResourceManager = new ResourceManager("Common.Properties.Resources", Assembly.GetExecutiongAssembly();
m_ResourceManager.GetString("MyString");

调用GetString会抛出缺少资源的异常。

在我的XAML中:

xmlns:p="clr-namespace:Common.Properties".....
<Label Content="{x:Static p:Resources.MyString}".....

使用XAML,项目无法编译,并且表示在我的每个x:Static上都找不到Resources部分。

同样,将所有内容更改为我的本地资源非常有效。它只是在尝试通过我的DLL访问它时。

1 个答案:

答案 0 :(得分:0)

您应该明确指定程序集,因为现在您正在尝试从当前正在执行的程序集中加载资源。例如:

CS:

ResourceManager rm = new ResourceManager("Common.Properties.Resources", typeof(Resources).Assembly);

XAML:

xmlns:p="clr-namespace:Common.Properties;assembly=Common"

*问题作者发现 VS2013需要更新2 或更高版本才能使其正常工作。另外,我无法在VS2015 CE上重现此问题。