0

有没有办法组合控制台工具并打包到托管的 .net DLL 中。然后我就可以通过调用 DLL 中的函数来调用每个控制台工具的函数。

前任。(只是例子)

trim.exe
 Usage:trim.exe <input> <ouput>

copy.exe
 Usage:copy.exe <input> <ouput>

然后我就可以像这样的函数一样调用它们

Utilities.Trim("input.txt","ouptut.txt");
Utilities.Copy("input.txt","ouptut.txt");

不幸的是,我无法访问这些控制台工具的源代码。

4

2 回答 2

1

可能的解决方案是运行外部工具,如下所示:

string windowsVersion = Utilities.GetWindowsVersion(); 
//...
static class Utilities { // Just a sample of cmd.exe invocation
    public static string GetWindowsVersion() {
        using(Process versionTool = new Process()) {
            versionTool.StartInfo.FileName = "cmd.exe";
            versionTool.StartInfo.Arguments = "/c ver";
            versionTool.StartInfo.UseShellExecute = false;
            versionTool.StartInfo.RedirectStandardOutput = true;
            versionTool.Start();
            string output = versionTool.StandardOutput.ReadToEnd();
            versionTool.WaitForExit();
            return output.Trim();
        }
    }
}

您可以将这些可执行文件嵌入到您的程序中(作为资源),在运行时将这些工具提取到特定位置,然后按照上面指定的方式运行这些工具。

另请查看以下线程:process.start() 嵌入式 exe 无需先提取到文件 c#

于 2013-09-05T15:30:29.487 回答
1

是的,您正在寻找从嵌入式资源运行的可执行文件。

在 C# 程序中嵌入外部可执行文件会有所帮助。

于 2013-09-05T15:26:48.050 回答