2013-04-11 63 views

回答

10

以下列格式返回资源。

[Namespace].[Folder].[Filename] 

请注意,路径中的所有文件夹由.分隔。所以,如果你有一个嵌入的资源具有以下配置

 
myproject.csproj (Namespace = com.mycompany.myproject) 
- Resources 
    - Images 
    - Icons 
     - my_icon.ico 

资源名称将是...

com.mycompany.myproject.Resources.Images.Icons.my_icon.ico 

如果你想从一个特定的文件夹中的所有选择,你可以使用下面的LINQ表达或根据您的需求进行修改。

string prefix = "your_namespace.your_folder." 

var resourceNames = Assembly.GetExecutingAssembly() 
    .GetManifestResourceNames() 
    .Where(name => name.StartsWith(prefix)); 
+0

此代码将抛出一个错误,因为它不能转换IEnumerable的字符串。此外,它不会考虑同一文件夹下的多个文件 – Flavia 2013-04-11 19:10:53

+0

糟糕,从另一个项目粘贴该代码,并忘记修改类型。我现在纠正了它。 – 2013-04-11 19:14:11

+0

现在它值得一票:) – Flavia 2013-04-11 19:20:33

3

如果您创建一个名为图片的文件夹,然后将文件存在,那么资源的名称将成为Assembly.Images.fileName。

所以,你可以尝试这样的:

var assembly = System.Reflection.Assembly.GetExecutingAssembly(); 

var names = assembly.GetManifestResourceNames().Where (n => n.Contains(".Images."));