簡體   English   中英

如何從C#程序集中提取嵌入式資源列表?

[英]How to extract a list of embedded resources from C# assembly?

我只想從我的程序集中將一些嵌入式資源或它們的列表提取到目錄中。 我使用了File.StreamWriteAllBytes以及File.Copy ,但是它沒有用,它的輸出只有0個字節。 這有什么問題?

public void Main()
{
    Assembly.GetExecutingAssembly().GetManifestResourceNames();
    Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("myNameSpace.myEmbeddedRes");
    FileStream fileStream = new FileStream("e:\\new.txt", FileMode.CreateNew, FileAccess.Write);
    for (int i = 0; i < stream.Length; i++)
    fileStream.WriteByte((byte)stream.ReadByte());
    fileStream.Close();
}

要么

private static void ExtEmbdRes(string outDir, string resLoc, List<string> files)
{
    foreach (string file in files)
    {
        using (System.IO.Stream stream = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(resLoc + "." + file))
        {
            using (System.IO.FileStream fileStream = new System.IO.FileStream(System.IO.Path.Combine(outDir, file), System.IO.FileMode.Create))
            {
                for (int i = 0; i < stream.Length; i++)
                {
                    fileStream.WriteByte((byte)stream.ReadByte());
                }
                fileStream.Close();
            }
        }
    }
}


static void Main()
{
    List<string> fileList = new List<string>();
    {
        fileList.Add("txtFile1.txt");
        fileList.Add("txtFile2.txt");
        fileList.Add("txtFile3.txt");
    };
    ExtEmbdRes("e:\\", "myNameSpace", fileList);
}

您可以使用assembly.GetManifestResourceNames()來獲取嵌入式資源的列表。 您還確定執行程序集是具有嵌入式資源的程序集嗎? 也許您正在使用類庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM