gpt4 book ai didi

c# - 将嵌入式资源读入字节数组时出错 (C#)

转载 作者:太空宇宙 更新时间:2023-11-03 22:11:56 25 4
gpt4 key购买 nike

我有一个名为“Test.exe”的嵌入式资源。我想执行以下操作:

  1. 将Test.exe的内容读入字节数组。
  2. 将 Test.exe 的内容(现在在字节数组中)写入新位置 (C:\Test.exe)。

我正在使用以下代码(可在本网站找到)- 但问题是“s”总是返回空值。我使用下面的代码如下:byte[] b = ReadResource("Test.exe");

public static byte[] ReadResource(string resourceName)
{
using (Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
byte[] buffer = new byte[1024];
using (MemoryStream ms = new MemoryStream())
{
while (true)
{
int read = s.Read(buffer, 0, buffer.Length);
if (read <= 0)
return ms.ToArray();
ms.Write(buffer, 0, read);
}
}
}
}

希望有人能找到我看不到的东西。

最佳答案

您需要指定资源的全名。例如,如果您的应用程序名为 Foo:

byte[] b = ReadResource("Foo.Test.exe");

实际上,最简单的方法是使用 Reflector 打开程序集并查看嵌入资源的确切名称。应用程序名称和资源名称之间可能有一个命名空间。

如果您没有 Reflector(是的,它变成了付费产品),要找出嵌入资源的名称,您可以使用以下代码:

foreach (var res in Assembly.GetExecutingAssembly().GetManifestResourceNames())
{
Console.WriteLine(res);
}

获得嵌入资源的确切名称后,将其传递给 ReadResource 方法。

作为另一种选择,您可以使用 ildasm.exe并双击 MANIFEST,它将显示所有嵌入的资源。

关于c# - 将嵌入式资源读入字节数组时出错 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6317457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com