Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将.exe文件集成到visual studio项目中_C#_Visual Studio - Fatal编程技术网

C# 将.exe文件集成到visual studio项目中

C# 将.exe文件集成到visual studio项目中,c#,visual-studio,C#,Visual Studio,“断骨到裸骨”场景: 我有一个c#中的程序,它在cmd中调用.exe(使用process.start),传递一些必需的参数 我想做的是:将exe包含到项目中,这样我就不必调用cmd 有什么想法吗?如果您只想包含,这样就不必发送两个文件,那么只需将其作为“嵌入式资源”包含到项目中(请参见项目项选项),然后您可以调用ResourceManager.GetStream并将其写入文件,然后调用Process.Start 如果您想集成该exe的功能,以便不再需要该exe(无Process.Start),则

“断骨到裸骨”场景: 我有一个c#中的程序,它在cmd中调用.exe(使用process.start),传递一些必需的参数

我想做的是:将exe包含到项目中,这样我就不必调用cmd


有什么想法吗?

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

如果您想集成该exe的功能,以便不再需要该exe(无Process.Start),则需要源代码

编辑:
如果exe是.NET,则“写入文件”是不必要的-然后您可以直接从资源流中以Assembly/AppDomin的形式加载它并执行它。

如果您只想包含,因此不需要发送两个文件,则只需将其作为“嵌入式资源”包含到项目中即可(请参见项目项选项)然后可以调用ResourceManager.GetStream并将其写入文件,然后调用Process.Start

如果您想集成该exe的功能,以便不再需要该exe(无Process.Start),则需要源代码

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

您可以将exe添加为嵌入式资源(只需右键单击解决方案资源管理器中的文件夹,添加现有项,然后获取其属性并将其设置为嵌入式资源)。但是,您可能无法方便地就地执行它-您需要将其保存到磁盘,然后执行它(这并不能解决您所说的必须执行.exe文件的问题,但确实解决了必须向最终用户发送多个文件的问题)


如果您有源代码,则可以将exe重新打包为dll,或将其直接集成到程序代码中。

您可以将exe添加为嵌入式资源(只需右键单击解决方案资源管理器中的文件夹,添加现有项,然后获取其属性并将其设置为嵌入式资源)。但是,您可能无法方便地就地执行它-您需要将其保存到磁盘,然后执行它(这并不能解决您所说的必须执行.exe文件的问题,但确实解决了必须向最终用户发送多个文件的问题)


如果您有源代码,则可以将exe重新打包为dll,或将其直接集成到程序代码中。

如果exe是.NET程序集,则可以使用将exe合并到主程序集中。然后可以直接调用exe中的代码。

如果exe是.NET程序集,则可以使用将exe合并到主程序集中。然后,您可以直接在exe中调用代码。

是的,但您让“将其写入文件”听起来很简单。不是。您必须确保在程序上下文始终具有读/写权限的位置写入文件。实际上,很难保证这一点。这意味着您无法将EXE写入“Temp”文件夹,或者您的应用程序中断。将EXE作为独立依赖项分发要好得多。一旦提取了cmd,您仍然需要“调用cmd”,所以这一切都是毫无意义的。但是,如果是.NET exe,您根本不必将其写入文件-您可以通过AppDomain/Assembly从流中加载并执行它…如果AppDomain/Assembly位于.NET中,您将如何使用AppDomain/Assembly执行它?。我是新手。请调用AppDomain.CreateDomain,然后调用.Load()。。在Load中,您将通过ResourceManager读取的程序集的字节数组放入其中,而ResourceManager又包含该exe。之后,您可以调用.ExecuteAssemblyByName()是的,但您让“将其写入文件”听起来很简单。不是。您必须确保在程序上下文始终具有读/写权限的位置写入文件。实际上,很难保证这一点。这意味着您无法将EXE写入“Temp”文件夹,或者您的应用程序中断。将EXE作为独立依赖项分发要好得多。一旦提取了cmd,您仍然需要“调用cmd”,所以这一切都是毫无意义的。但是,如果是.NET exe,您根本不必将其写入文件-您可以通过AppDomain/Assembly从流中加载并执行它…如果AppDomain/Assembly位于.NET中,您将如何使用AppDomain/Assembly执行它?。我是新手。请调用AppDomain.CreateDomain,然后调用.Load()。。在Load中,您将通过ResourceManager读取的程序集的字节数组放入其中,而ResourceManager又包含该exe。之后,您可以调用.ExecuteAssemblyByName()