2016-05-06 3 views
2

私は単純なWinFormsアプリケーションを持っていますが、コンピュータ上のフォルダにコピーしたい組み込みリソース(「リソース」のサブフォルダにあります)があります。現在、私は後者の作業持っている(明示的な方法で埋め込まれたリソースの命名をし、どこに行くべき):組み込みリソースをループしてローカルパスにコピー

string path = @"C:\Users\derek.antrican\"; 

using (Stream input = Assembly.GetExecutingAssembly().GetManifestResourceStream("WINFORMSAPP.Resources.SUBFOLDER.FILE.txt")) 
using (Stream output = File.Create(path + "FILE.txt")) 
{ 
    input.CopyTo(output); 
} 

しかし、私はまだ以前の作業を取得する方法を把握しようとしている:をループするすべてのリソースを "WINFORMSAPP.Resources.SUBFOLDER"フォルダに保存して移動します。私はかなりのグーグルを行ってきましたが、このサブフォルダ内の各組み込みリソースのリストを取得する方法はまだ分かりません。

ご迷惑をおかけして申し訳ございません。あなたのアセンブリに埋め込まれているすべてのリソースを取得することによって

答えて

4

スタート:

Assembly.GetExecutingAssembly().GetManifestResourceNames() 

あなたは、彼らがStartsWithへの単純な呼び出しでの内部またはその外側にあるかどうかを確認するため、ご希望のサブフォルダの名前に対するこれらの名前を確認することができます。

今の名前をループし、対応するリソース・ストリームを取得:

const string subfolder = "WINFORMSAPP.Resources.SUBFOLDER."; 
var assembly = Assembly.GetExecutingAssembly(); 
foreach (var name in assembly.GetManifestResourceNames()) { 
    // Skip names outside of your desired subfolder 
    if (!name.StartsWith(subfolder)) { 
     continue; 
    } 
    using (Stream input = assembly.GetManifestResourceStream(name)) 
    using (Stream output = File.Create(path + name.Substring(subfolder.Length))) { 
     input.CopyTo(output); 
    } 
} 
関連する問題