標題總結得非常好。我知道我可以使用嵌入式資源名稱:C#從特定文件夾獲取嵌入式資源或區分不同文件夾中的嵌入式資源
var assembly = System.Reflection.Assembly.GetExecutingAssembly();
string[] files = assembly.GetManifestResourceNames();
但我想只能從特定文件夾獲取嵌入式資源。或者至少能夠區分來自不同文件夾的嵌入資源。
標題總結得非常好。我知道我可以使用嵌入式資源名稱:C#從特定文件夾獲取嵌入式資源或區分不同文件夾中的嵌入式資源
var assembly = System.Reflection.Assembly.GetExecutingAssembly();
string[] files = assembly.GetManifestResourceNames();
但我想只能從特定文件夾獲取嵌入式資源。或者至少能夠區分來自不同文件夾的嵌入資源。
以下列格式返回資源。
[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));
如果您創建一個名爲圖片的文件夾,然後將文件存在,那麼資源的名稱將成爲Assembly.Images.fileName。
所以,你可以嘗試這樣的:
var assembly = System.Reflection.Assembly.GetExecutingAssembly();
var names = assembly.GetManifestResourceNames().Where (n => n.Contains(".Images."));
此代碼將拋出一個錯誤,因爲它不能轉換IEnumerable的字符串。此外,它不會考慮同一文件夾下的多個文件 – Flavia 2013-04-11 19:10:53
糟糕,從另一個項目粘貼該代碼,並忘記修改類型。我現在糾正了它。 – 2013-04-11 19:14:11
現在它值得一票:) – Flavia 2013-04-11 19:20:33