【发布时间】:2011-07-20 14:48:19
【问题描述】:
简陋的场景: 我在 C# 中有一个程序,它在 cmd 中调用 .exe(使用 process.start),传递一些必需的参数。
我正在尝试做的事情:将 exe 包含到项目中,这样我就不必调用 cmd。
有什么想法吗?
【问题讨论】:
标签: c# visual-studio
简陋的场景: 我在 C# 中有一个程序,它在 cmd 中调用 .exe(使用 process.start),传递一些必需的参数。
我正在尝试做的事情:将 exe 包含到项目中,这样我就不必调用 cmd。
有什么想法吗?
【问题讨论】:
标签: c# visual-studio
如果您只想包含这样您就不必发送两个文件,那么只需将其作为“嵌入式资源”包含到项目中(请参阅项目项选项),然后您可以调用 ResourceManager.GetStream 并将其写入文件并调用 Process.Start。
如果您想集成该 exe 的功能以便不再需要该 exe(无需 Process.Start),那么您需要源代码...
编辑: 如果 exe 是 .NET,则不需要“写入文件” - 然后您可以直接从资源流中加载它作为 Assembly/AppDomin 并执行它。
【讨论】:
您可以将 exe 添加为嵌入式资源(只需右键单击解决方案资源管理器中的文件夹,添加现有项目,然后获取其属性并将其设置为嵌入式资源)。但是,您可能无法轻松地执行它 - 您需要将其保存到磁盘然后执行它(这并不能解决您所说的必须 ShellExecute .exe 文件的问题,但确实解决了问题不必向最终用户发送多个文件)。
如果您有源代码,则可以将 exe 重新打包为 dll,或将其直接集成到您的程序代码中。
【讨论】:
如果 exe 是 .NET 程序集,您可以使用 ILMerge 将 exe 合并到您的主程序集中。然后就可以直接调用exe中的代码了。
【讨论】: