如何在C#Windows Forms应用程序中嵌入外部可执行文件?
编辑:我需要嵌入它,因为它是一个外部免费控制台应用程序(用C ++制造),从中可以读取要在程序中使用的输出值。嵌入它会更好并且更专业。
第二个原因是要求将Flash投影仪文件嵌入.NET应用程序中。
这是一些可以大致完成此操作的示例代码,减去任何形式的错误检查。另外,请确保要嵌入的程序的许可证允许这种使用。
// extracts [resource] into the the file specified by [path] void ExtractResource( string resource, string path ) { Stream stream = GetType().Assembly.GetManifestResourceStream( resource ); byte[] bytes = new byte[(int)stream.Length]; stream.Read( bytes, 0, bytes.Length ); File.WriteAllBytes( path, bytes ); } string exePath = "c:\temp\embedded.exe"; ExtractResource( "myProj.embedded.exe", exePath ); // run the exe... File.Delete( exePath );
唯一棘手的部分是为的第一个参数获取正确的值ExtractResource。它的格式应为“ namespace.name”,其中名称空间是项目的默认名称空间(在“项目” |“属性” |“应用程序” |“默认名称空间”下查找)。第二部分是文件的名称,您需要将其包括在项目中(确保将构建选项设置为“嵌入式资源”)。如果将文件放在目录(例如资源)下,则该名称将成为资源名称的一部分(例如“ myProj.Resources.Embedded.exe”)。如果遇到问题,请尝试在Reflector中打开已编译的二进制文件,然后查看Resources文件夹。此处列出的名称是您将传递给的名称GetManifestResourceStream。
ExtractResource
GetManifestResourceStream