仅资源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访问它时。
您应该显式指定程序集,因为现在您正试图从当前执行的程序集中加载资源。例如:
CS:
ResourceManager rm = new ResourceManager("Common.Properties.Resources", typeof(Resources).Assembly);
XAML:
xmlns:p="clr-namespace:Common.Properties;assembly=Common"
*问题作者发现VS2013需要更新2或更高版本才能运行。此外,我无法在VS2015 CE上复制此问题。