C# 试图将嵌入式资源作为字节流写入,但它们始终为空
因此,我尝试在我的资源中编写一个exe文件,这是我使用的方法:我将该文件添加为资源,然后将此代码添加到resources.Designer.cs 然后,我从1.cs将其写入我的主窗体源代码中,以备需要:C# 试图将嵌入式资源作为字节流写入,但它们始终为空,c#,winforms,stream,bytearray,nullreferenceexception,C#,Winforms,Stream,Bytearray,Nullreferenceexception,因此,我尝试在我的资源中编写一个exe文件,这是我使用的方法:我将该文件添加为资源,然后将此代码添加到resources.Designer.cs 然后,我从1.cs将其写入我的主窗体源代码中,以备需要: string tempExeName = Path.Combine(Directory.GetCurrentDirectory(), "Creating.exe"); using (FileStream fsDst = new FileStream(tempExeName, F
string tempExeName = Path.Combine(Directory.GetCurrentDirectory(), "Creating.exe");
using (FileStream fsDst = new FileStream(tempExeName, FileMode.Create, FileAccess.Write))
{
byte[] bytes = Resources.GetSubExe();
fsDst.Write(bytes, 0, bytes.Length);
}
string path = Path.GetDirectoryName(kryptonTextBox4.Text);
createpatch(kryptonTextBox3.Text,kryptonTextBox4.Text,patchname,path);
Application.DoEvents();
File.Delete("Creating.exe");
当我运行代码时,我总是在这一行得到一个NullReferenceException:
fsDst.Write(bytes, 0, bytes.Length);
在返回字节[]obj行上放置断点。我打赌obj将是空的。您需要阅读ResourceManager.GetObject的文档,并确保已正确设置所有内容。请检查Resources.Designer.cs。可能exe文件名是以exe\u file\u名称导入的,即带有下划线。@KirillShlenskiy很抱歉,我没有回复我在过去几天失去了连接,我会检查一下,然后带着一些反馈回来@AlexD这里的文件名只是临时文件,在我的项目中只有一个字,所以我确信它是好的。@KirillShlenskiy首先我很抱歉双重发布,中断该行不会被执行,我调用的方法对吗?
fsDst.Write(bytes, 0, bytes.Length);