小编典典

在C#程序中嵌入外部可执行文件

c#

如何在C#Windows Forms应用程序中嵌入外部可执行文件?

编辑:我需要嵌入它,因为它是一个外部免费控制台应用程序(用C ++制造),从中可以读取要在程序中使用的输出值。嵌入它会更好并且更专业。

第二个原因是要求将Flash投影仪文件嵌入.NET应用程序中。


阅读 330

收藏
2020-05-19

共1个答案

小编典典

这是一些可以大致完成此操作的示例代码,减去任何形式的错误检查。另外,请确保要嵌入的程序的许可证允许这种使用。

// 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

2020-05-19