如何在C#和VB.Net中找到默认资源文件的名称?

时间:2011-02-01 21:09:19

标签: c# .net vb.net resources embedded-resource

我创建了一个类似于ToolboxBitmapAttribute的属性,它允许您将Icon或Image与一个类相关联。

要关联图像,请将资源文件基本名称,类型(以查找程序集)和资源名称传递给属性构造函数。然后,我使用ResourceManager来访问资源:

Dim rm = New ResourceManager(ResourceFileBaseName, passedType.Assembly)
Dim obj = rm.GetObject(resourceName)

这很好,除了我希望选项只传递构造函数中的资源名称,并省略资源文件基名。然后我会从默认资源文件中获取资源。当我说默认资源文件时,我指的是启动Visual Studio时,打开属性页并单击“资源”选项卡。

问题是,在VB.Net中开发时,基本名称是“RootNamespace.Resources”,在C#中开发时,基本名称是“Rootnamespace.Properties.Resources”。

我可以在哪里以编程方式查找默认资源文件的名称?

更新

我能做的是获取所有资源名称的列表:

t.Module.Assembly.GetManifestResourceNames

然后,我可以查找以Resources.resources结尾的名称,并使用它来构建资源文件基名。

然而,这是低效的,但我怀疑这是唯一的方法。

1 个答案:

答案 0 :(得分:0)

您可以尝试程序集中的所有资源文件,并测试该图标是否可用。

检测默认资源文件非常困难。例如,我总是将我的C#项目的资源文件移动到根命名空间。此外,用户可能故意将图像放在不同的资源文件中。