web-dev-qa-db-ja.com

フォルダー内のすべての埋め込みリソースをリストする

私のソリューションでは、いくつかのファイルを含むフォルダーがありました。このすべてのファイルには、ビルドアクション「埋め込みリソース」があります。

このコードでファイルを取得できます:

Assembly.GetManifestResourceStream(Assembly.GetName().Name + ".Folder.File.txt");

しかし、すべてを取得する方法はありますか*.txtこのフォルダー内のファイル?名前のリストまたはそれらすべてを反復処理する方法?

41
San

チェックアウトできます

Assembly.GetManifestResourceNames()

含まれているすべてのリソースの文字列の配列を返します。次に、そのリストをフィルタリングして、すべての*.txtファイルは埋め込みリソースとして保存されます。

詳細については、 GetManifestResourceNamesのMSDNドキュメント を参照してください。

83
marc_s

これを試して、すべての。txtファイルがFolderディレクトリ内にある配列を返します。

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(folderName.Length + 1))
        .ToArray();
}

注:ファイル名を取得するには、//.Select(...行のコメントを解除します。

18
dbvega

これで試してみてください。ここですべてのファイルを取得します

string[] embeddedResources = Assembly.GetAssembly(typeof(T)).GetManifestResourceNames();

Tはもちろんあなたのタイプです。汎用的に使用できます

5
masterchris_99