我正在尝试将一些 .exe 和 .dll 文件嵌入到我的应用程序中(只需将所需的文件包含到我的项目中,右键单击它们并将 Build Action 更改为“Embedded Resource”)。这是我要提取的代码:
private void ExtractTo(string path){
string filename = "MyNamespace.Resources.MyEmbeddedEXEfile.exe";
Assembly asm = Assembly.GetExecutingAssembly();
string[] resourceNames = asm.GetManifestResourceNames();
if(resourceNames.Contains(filename)){
Stream s = asm.GetManifestResourceStream(filename);
byte[] buffer = new byte[s.Length];
File.WriteAllBytes(path + "\\MyEXEfile.exe", buffer);
}
}
它似乎运行良好,嵌入文件被提取到传入的路径,它与我包含在我的项目中并作为资源嵌入的文件具有相同的大小。但是好像已经损坏了,点击解压出来的EXE文件后,弹出一个错误对话框,提示“这个文件的版本与你运行的Windows版本不兼容。检查你电脑的系统信息看是否需要x86(32 位)或 x64(64 位)程序,然后联系您的软件发行商。 “好吧,我正是该软件的发行商 =))。
我正在使用 Windows 7 Ultimate 64 位。原始文件(我选择嵌入)是一个 32 位文件。我也尝试过使用 dll 文件,并且提取的 dll 文件也无法作为原始文件使用。
您能否指出我提取资源的代码有什么问题,或者在我将其作为资源嵌入后文件立即损坏???
您的帮助将不胜感激。谢谢。