如何使用位于解决方案的exe文件执行命令? C#winforms

时间:2016-02-05 12:49:22

标签: c# winforms

如何执行如下命令:

adb.exe kill-server

找到解决方案本身的文件?

Image

我在环境变量中将adb添加到PATH后才执行:

private string implementCommandLine(string fileName, string param)
    {
        string output = "";

        ProcessStartInfo startInfo = new ProcessStartInfo(fileName, param)
        {
            WindowStyle = ProcessWindowStyle.Hidden,
            UseShellExecute = false,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            CreateNoWindow = true
        };

        Process adbProc;
        adbProc = Process.Start(startInfo);
        using (StreamReader myOutput = adbProc.StandardOutput)
        {
            output = myOutput.ReadToEnd();
        }

        return output;
    }

我也尝试过获取位于Files文件夹中的adb.exe的路径

但是这条路真的太混乱了,我无法成功!

当我执行“Files / adb.exe [params]”时,我收到此错误:

An unhandled exception of type 'System.ComponentModel.Win32Exception' occurred in System.dll

异常详细信息:

Exception

2 个答案:

答案 0 :(得分:6)

您在解决方案资源管理器中看到的文件夹用于在您进行开发时组织源代码。一般来说,一旦您构建并部署了程序,这些文件夹就不会自动具有任何意义。

您需要做的是确保您需要运行的文件是构建输出的一部分,您可以提前知道文件相对于可执行文件的位置,然后确保将其部署到办法。最简单的方法是在感兴趣的项目上设置属性:

enter image description here

这会将完整的项目复制到与源代码相同的文件夹结构中的构建输出中,因此在您的情况下,您的Debug文件夹将具有:

Program.exe Program.pdb Files\adb.exe

每当您部署构建时,请确保维护该文件夹结构,然后使用any of the usual ways找到相对于adb.exe的{​​{1}}以获取该程序的文件夹路径,

答案 1 :(得分:2)

首先:确保你选择并选择"复制如果更新"或"永远复制"该文件。

如果这是正确的,请务必将System.Windows.Forms.Application.StartupPath添加到您要执行该文件的路径中。

第三件事是:你确定,你的应用程序(adb)是无法找到的,而不是一些依赖(需要用于测试的dll)吗?通过在该目录中放置一个简单的textfile.txt并尝试启动它来验证这一点。如果可行,但adb没有,那么应用程序正确启动,但需要其他库本身,这是无法找到的。

此外:向我们展示您的"文件名"如果你仍然被困住,那就变量。