2011-07-20 170 views
1

打破,裸机场景: 我在C#中的程序来调用一个.exe文件内CMD(使用的Process.Start),经过一些必需的参数。集成.exe文件到Visual Studio项目

我想要做的:包括exe文件到项目中,这样我不用调用CMD做。

有什么想法?

回答

5

如果你只是想包括所以你不必运送两个文件,那么只需将其作为“嵌入式资源”(参见项目选项)包含到项目中,然后就可以调用ResourceManager.GetStream并将其写入文件并调用Process.Start。

如果你想集成了exe文件的功能,使不需要的exe了(没有的Process.Start),那么你需要的源代码

编辑: “写入到文件”是如果exe是.NET,则不需要 - 那么您可以直接从资源流中加载它作为Assembly/AppDomin并执行它。

+1

是的,但你让它“写入文件”的声音很容易。不是。您必须确保您将文件写入程序的上下文* always *具有读/写权限的地方。在实践中,很难确保这一点。这意味着你不能将EXE写入“Temp”文件夹,或者你的应用程序中断了。将EXE作为独立的依赖项分发好得多。一旦你提取它,你仍然*将不得不“调用cmd”,所以这是毫无意义的。 –

+2

你是对的 - 对于本机exe文件。但如果是一个.NET EXE你不必把它写入一个文件在所有 - 你可以加载+从流中执行它通过的AppDomain /大会......你会 – Yahia

+0

如何做到这一点使用的AppDomain /组装如果它的'在.NET中?我是一个新手。 – TarunG

3

您可以添加一个exe作为嵌入资源(只是在解决方案资源管理文件夹上点击右键,添加现有项目,然后得到它的属性,并将其设置为嵌入资源)。但是,您可能无法轻松地执行它 - 您需要将其保存到磁盘然后执行它(这不能解决您陈述的必须ShellExecute.exe文件的问题,但可以解决问题必须向最终用户运送多个文件)。

如果你的源代码,那么你就可以重新打包的exe作为一个DLL,或者直接集成到你的程序代码。

1

如果EXE是.NET程序集,您可以使用ILMerge exe文件合并到主装配。然后您可以直接在exe中调用代码。

相关问题