Включить и выполнить EXE в приложении командной строки C # - PullRequest
3 голосов
/ 13 июля 2010

Итак, я нашел отличное небольшое приложение командной строки EXE (назовем его program.exe), которое выводит некоторые данные, которыми я бы хотел управлять с помощью C #.

Мне было интересно, есть ли способ«package» program.exe в мой файл проекта visual studio, чтобы я мог передать скомпилированное приложение коллеге без необходимости отправлять им program.exe.

Любая помощь приветствуется.

Ответы [ 3 ]

4 голосов
/ 13 июля 2010

Есть несколько способов сделать это.Во-первых, вы должны добавить 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();
    }
0 голосов
/ 13 июля 2010

Вы можете попробовать что-то вроде:

try
{
  System.Diagnostics.Process foobar = Process.Start("foobar.exe");
}
catch (Exception error)
{
 // TODO: HANDLE error.Message
}
0 голосов
/ 13 июля 2010

Вы можете добавить любой другой файл в свой проект, щелкнув правой кнопкой мыши по проекту и выбрав добавить новый

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...