在C#命令行应用程序中包含并执行EXE

时间:2010-07-13 15:32:25

标签: c# visual-studio command-line

所以我找到了一个很棒的小EXE命令行应用程序(我们称之为program.exe),它输出了一些我想用C#操作的数据。

我想知道是否有办法将program.exe“打包”到我的visual studio项目文件中,这样我就可以将编译好的应用程序交给同事,而不必将它们发送给program.exe。

感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

有几种方法可以实现这一目标。首先,您应该将program.exe添加到项目中。您可以通过在Visual Studio中右键单击项目,然后选择添加>来完成此操作。现有项目...选择program.exe,它将出现在项目中。查看其属性,您可以将“复制到输出目录”设置为“始终复制”,它将显示在应用程序旁边的输出目录中。

解决问题的另一种方法是将其作为资源嵌入。将program.exe添加到项目后,将项目的Build Action属性从Content更改为Embedded Resource。在运行时,您可以使用Assembly.GetManifestResourceStream提取命令行可执行文件并执行它。

    private static void ExtractApplication(string destinationPath)
    {
        // The resource name is defined in the properties of the embedded
        string resourceName = "program.exe";
        Assembly executingAssembly = Assembly.GetExecutingAssembly();
        Stream resourceStream = executingAssembly.GetManifestResourceStream(resourceName);
        FileStream outputStream = File.Create(destinationPath);
        byte[] buffer = new byte[1024];
        int bytesRead = resourceStream.Read(buffer, 0, buffer.Length);
        while (bytesRead > 0)
        {
            outputStream.Write(buffer, 0, bytesRead);
            bytesRead = resourceStream.Read(buffer, 0, buffer.Length);
        }

        outputStream.Close();
        resourceStream.Close();
    }

答案 1 :(得分:0)

您可以尝试以下方式:

try
{
  System.Diagnostics.Process foobar = Process.Start("foobar.exe");
}
catch (Exception error)
{
 // TODO: HANDLE error.Message
}

答案 2 :(得分:-1)

您可以通过右键单击项目并选择添加新

,将任何杂项文件添加到项目中