【问题标题】:Can .Net Core CLI be run from within C# Application.Net Core CLI 可以从 C# 应用程序中运行吗
【发布时间】:2020-08-10 12:49:07
【问题描述】:

我正在构建我的第一个 WPF 应用程序 - 一个开发人员工具。我正在.Net Core 3.1 中构建它。我需要使用 .Net Core CLI 从该工具中创建另一个应用程序。我真的有两个问题:

  1. 这可能吗?我做了很多研究,但到目前为止我一无所获。
  2. 是否有用于向类库项目添加新类的 CLI 命令?该工具需要创建一个新的解决方案,该解决方案与它创建的添加到项目中的所有类一起编译。

【问题讨论】:

  • 是的 - 我知道这不是我的问题。我需要从正在运行的 C# WPF 应用程序中的特定文件夹中运行该命令和所有后续命令。
  • 这是一个声明。

标签: c# .net wpf .net-core command-line-interface


【解决方案1】:
  1. 这可能吗?我做了很多研究,但到目前为止我一无所获。

当然,它甚至与 WPF 无关。您可以像使用 Process 的任何其他程序一样运行 dotnet CLI。下面的代码将调用dotnet的帮助。

var process = new Process();
var startInfo = new ProcessStartInfo
{
   FileName = "dotnet.exe",
   Arguments = "-h"
};
process.StartInfo = startInfo;
process.Start();

如果您不想显示控制台寡妇,可以将这些选项添加到启动信息中。

CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,

请记住,命令可能会失败,您应该处理控制台输出以对此做出反应。在此处查找演示如何redirect console output.

的相关帖子
  1. 是否有用于向类库项目添加新类的 CLI 命令?该工具需要创建一个新的解决方案,该解决方案与它创建的添加到项目中的所有类一起编译。

让我们快速浏览一下您的应用程序的基本部分。由于调用 dotnet 的代码始终相同,但参数不同,我将只显示这些代码。

  1. 使用类库创建新解决方案
Arguments = @"new classlib -o C:\The\Path\To\Your\Solution -n MyProject"

classlib 命令将在给定目录中创建一个名为 MyProject 的类库。

  1. 添加新类
File.Create(@"C:\The\Path\To\Your\Solution\MyClass.cs");
File.WriteAllText(@"C:\The\Path\To\Your\Solution\MyOtherClass.cs", cSharpClassBoilerPlateCode);

据我所知,没有用于创建单个类文件的内置命令。但是,您可以直接在项目目录中创建一个带有File.CreateFile.WriteAllText.cs 文件,其中包含一些样板代码。 .NET SDK 样式的项目格式默认包含项目目录中的所有源文件,除非您覆盖此行为。

  1. 编译项目
Arguments = @"build C:\The\Path\To\Your\Solution\MyProject.csproj"

这只是一个入门示例。 dotnet 命令行界面提供了更多选项来自定义和使用解决方案和项目,请参阅下文以供参考。

【讨论】:

  • 谢谢你——正是我想要的。已经测试将类添加到类库中并且效果很好。
【解决方案2】:

这可能吗?

当然。您可以使用Process.Start API 调用任何可执行文件,包括dotnet 命令行工具:

//dotnet new wpf:
System.Diagnostics.Process.Start(@"C:\Program Files\dotnet\dotnet", "new wpf");

是否有用于向类库项目添加新类的 CLI 命令?

不,但是在构建项目时将考虑添加到项目文件夹中的任何具有匹配文件扩展名的文件,因此您实际上不需要显式向项目添加类。

【讨论】:

    猜你喜欢
    • 2021-01-23
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2021-10-28
    • 2019-07-17
    • 1970-01-01
    相关资源
    最近更新 更多