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

本文关键字:资源 访问 DLL | 更新日期: 2023-09-27 18:26:53

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

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

我是怎么做到的:

我创建了一个名为Common的类库。在Common项目下,我有资源。resx(在Properties下)我有那里的所有字符串,我的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访问它时。

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

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

CS:

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

XAML:

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

*问题作者发现VS2013需要更新2或更高版本才能运行。此外,我无法在VS2015 CE上复制此问题。