【问题标题】:combine console tools and pack into a single .NET dll [closed]结合控制台工具并打包成一个.NET dll [关闭]
【发布时间】:2023-03-03 19:47:02
【问题描述】:

有没有办法将控制台工具组合起来并打包到托管的 .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");

很遗憾,我无法访问这些控制台工具的源代码。

【问题讨论】:

  • 不,您不能将独立的可执行文件放在 DLL 中,然后在那里调用它们。为什么不能自己编写等效函数并将它们放在实用程序类中?您提供的两个示例似乎并不复杂。
  • 感谢@ken-white,没有什么复杂的,因为它们只是示例。我实际上正在处理复杂的控制台实用程序。

标签: c# .net console


【解决方案1】:

是的, 您正在寻找从 Embedded Resource 运行的可执行文件。

这个Embedding an external executable inside a C# program 会有所帮助。

【讨论】:

  • 我记得我也看到了不保存 exe 文件的解决方案,但你必须寻找它。
  • 该答案不是“运行嵌入式可执行文件”。它将其提取为资源,将其保存到文件,从磁盘运行文件,然后删除它提取的文件。这些都不是这里的问题。
【解决方案2】:

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

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() embedded exe without extracting to file first c#

【讨论】:

  • 您的答案不是“运行嵌入式可执行文件”。它提取它并从磁盘运行它。您链接到的答案也不会嵌入运行。它将其提取为资源,将其保存到文件中,从磁盘运行文件,然后删除它提取的文件。 (请参阅链接答案中的最后三行代码。)您的或链接的那个都没有回答问题问她。
  • @KenWhite 问题不是关于“运行嵌入式可执行文件”,而是关于将一​​些工具组合到一个库中并以某种方式使用这个库。而且我相信,如果结果是可以接受的,那么对于 OP 来说,事情是如何完成的并不重要。我的回答只是指出如何做到这一点......
  • 问题是关于“将控制台可执行文件嵌入到 DLKL 中,然后将它们作为 DLL 中的函数调用”,这显然 不是“从 DLL 中提取应用程序并运行它”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-11
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 2014-08-02
相关资源
最近更新 更多