列出文件夹中的所有嵌入式资源
问题描述:
在我的解决方案中,有一个包含少量文件的文件夹。所有这些文件都有Build Action“Embedded Resource”。列出文件夹中的所有嵌入式资源
有了这个代码,我可以得到一个文件:
assembly.GetManifestResourceStream(assembly.GetName().Name + ".Folder.File.txt");
但是,有没有什么办法让这个文件夹中的所有文件*.txt
?一列名称或一个方法遍历它们都是?
答
你可以检查出
assembly.GetManifestResourceNames()
返回的所有资源字符串数组包含。然后,您可以过滤该列表以查找作为嵌入式资源存储的所有*.txt
文件。
答
试试这个。这里你得到所有文件
string[] embeddedResources = Assembly.GetAssembly(typeof(T)).GetManifestResourceNames();
T当然是你的类型。所以你可以使用它的通用
答
就破获这一点,使用:
Assembly _assembly;
_assembly = Assembly.GetExecutingAssembly();
List<string> filenames = new List<string>();
filenames = _assembly.GetManifestResourceNames().ToList<string>();
List<string> txtFiles = new List<string>();
for (int i = 0; i < filenames.Count(); i++)
{
string[] items = filenames.ToArray();
if (items[i].ToString().EndsWith(".txt"))
{
txtFiles.Add(items[i].ToString());
}
}
答
试试这个,返回将所有.TXT文件内部数组文件夹目录。
private string[] GetAllTxt()
{
var executingAssembly = Assembly.GetExecutingAssembly();
string folderName = string.Format("{0}.Resources.Folder", executingAssembly.GetName().Name);
return executingAssembly
.GetManifestResourceNames()
.Where(r => r.StartsWith(folderName) && r.EndsWith(".txt"))
//.Select(r => r.Substring(constantResName.Length + 1))
.ToArray();
}
注意:取消注释//.Select(...
行以获取文件名。
“只是破解了这个”。那花了18个月? :) –
first filenames = ToList()然后对于每个文件名items = filenames.ToArray()???然后string.ToString()???你在跟我开玩笑吗? – sasjaq