0
最近研究vb.net,但我仍然没有想出如何从资源中删除图像或可执行文件。 如果我把一个图像,并添加到资源,我会提取 C:\ foto.jpg 我该怎么办? 在此先感谢,我为我的VB知识道歉是英语VB.NET帮助资源
最近研究vb.net,但我仍然没有想出如何从资源中删除图像或可执行文件。 如果我把一个图像,并添加到资源,我会提取 C:\ foto.jpg 我该怎么办? 在此先感谢,我为我的VB知识道歉是英语VB.NET帮助资源
你可以使用GetManifestResourceStream方法获取嵌入图像的流,在缓冲区中读取该流,并将其写入使用WriteAllBytes方法的光盘:
Using Stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("AssemblyName.image.jpg")
Dim Buffer(Stream.Length) As Byte
Stream.Read(Buffer, 0, Buffer.Length)
File.WriteAllBytes("image.jpg", Buffer)
End Using
这应该适用于小文件,但如果你有嵌入的程序集里面的一些非常大的文件,这将是更好的阅读它们的块,以避免消耗大量的内存:
Using stream As Stream = Assembly.GetExecutingAssembly.GetManifestResourceStream("AssemblyName.image.jpg")
Using fileStream As FileStream = File.Create("image.jpg")
Dim bytesRead As Integer
Dim buf As Byte() = New Byte(1023) {}
Do While (bytesRead = stream.Read(buf, 0, buf.Length) > 0)
Dim actual As Byte() = New Byte(bytesRead - 1) {}
Buffer.BlockCopy(buf, 0, actual, 0, actual.Length)
fileStream.Write(actual, 0, actual.Length)
Loop
End Using
End Using
对象参照的文ce未设置为对象的实例 line Dim Buffer(Stream.Length)As Byte – user325439 2010-04-25 16:30:54
发生这种情况是因为您没有指定嵌入资源的正确名称。例如,如果当前程序集名为'AssemblyName',并且在根目录下嵌入了'image.jpg',则资源的名称将为'AssemblyName.image.jpg'。用反射器打开生成的程序集并查看嵌入的资源部分,看看准确的名称是什么。 – 2010-04-25 16:35:55
还是什么都没有,反正我也会包含可执行文件。埃克“ 我为我的无知道歉,但你可以发布详细的指南?? 在此先感谢 – user325439 2010-04-25 18:39:01