.core 控制台应用程序
尽管.NET传统上一直是仅Windows的封闭源专有平台,但那些日子即将结束。 新的.NET Core平台已在这里,它是开源和跨平台的。 现在,您可以在任何平台上编写一次C#/。NET代码,然后在Windows,Linux和macOS上运行它。
这个新的.NET平台是在GitHub上公开构建的,主要使用MIT和Apache许可证,甚至接受社区的捐助。 这个新平台是围绕以前开放源代码的Roslyn编译器 (.NET Compiler Platform)重新设计的,并且不与Windows或Visual Studio捆绑在一起,从而使开发人员可以在任何IDE中的任何系统上工作,并在任何服务器或平台上运行其应用。
为了演示这个新平台,让我们构建一个超级简单的控制台应用程序,使用新的dotnet命令行界面(CLI)在Windows和Linux上运行。 首先,您需要安装.NET Core(包括dotnet CLI工具)。 Microsoft在其在线文档中为大多数平台(包括各种发行版)提供了完整的文档 。
如果您不想在本地安装.NET Core,则microsoft / dotnet:latest Docker映像已预装有所有最新工具和SDK。
1.创建我们的新应用
.NET Core瞬息万变。 这些说明适用于撰写本文时的最新版本。
首先,我们可以使用dotnet new console创建一个新的控制台应用程序。 这将自动创建一个以当前目录命名的Program.cs和一个.csproj (我的名字是app.csproj )。
![新的dotnet dotnet new](https://i-blog.csdnimg.cn/blog_migrate/8c73c8387fde36faaa43365140fed06f.png)
为了证明这是可行的 ,请尝试运行dotnet restore ,它将还原运行应用程序所需的所有软件包。 完成之后,运行dotnet run ,您应该会看到最重要的Hello World! 出现在您的控制台中。
![dotnet恢复运行 dotnet restore run](https://i-blog.csdnimg.cn/blog_migrate/90de0dfd149380e3553b0d5c3ea62594.png)
2.向我们的应用程序添加逻辑
在您喜欢的文本编辑器中打开Program.cs ,并替换读取Console.WriteLine(“ Hello World!”);的行。 与下面的行。 由于.NET Core未与Visual Studio耦合,因此您可以使用任何喜欢的IDE或文本编辑器,甚至可以使用vi 。
Console.WriteLine($"Hello {System.Environment.GetEnvironmentVariable("USER")}! I'm {System.Environment.MachineName} and I'm talking to you from {System.IO.Directory.GetCurrentDirectory()}");
对于不熟悉C#和.NET的用户,此代码实质上是使用当前环境中的信息来打印经典Hello World应用程序的更详细版本。 请注意,这里也没有特定于平台的代码。
3.运行您的新应用
如果现在运行dotnet build ,则将.dll和其他文件添加到./bin/Debug文件夹中。 您已经编写了一个跨平台的控制台应用程序。 将这些文件复制到运行.NET Core的另一台计算机上,甚至是Linux或OS X,并运行dotnet ./path/to/your/app.dll ,您应该会看到与以前相同的输出; 但是,您仍在使用本地.NET运行时来执行此操作。 幸运的是,.NET Core包含在独立程序包中生成和发布本机二进制文件的功能,因此您的目标系统(或用户)甚至不需要安装.NET即可运行您的应用程序。
4.为其他平台做准备
要准备跨平台应用程序,我们必须告诉.NET Core SDK要为其构建哪些平台。 因为此过程涉及本机库,所以我们不仅必须特定于哪个平台,还必须特定于特定的样式和版本。
从应用程序目录中打开.csproj文件,并在以下之间添加以下XML标记: 和标签:
<PropertyGroup >
<RuntimeIdentifiers > win10-x64;osx.10.12-x64;debian.8-x64
</RuntimeIdentifiers >
</PropertyGroup >
这告诉.NET,我们要为Windows 10 64位,macOS Sierra 和 Debian 8构建应用程序的独立版本。现在,您需要做的就是为我们之前选择的每个运行时运行dotnet publish 。为每个平台编译本机二进制文件:
![dotnet发布屏幕截图 dotnet publish screenshot](https://i-blog.csdnimg.cn/blog_migrate/36bdc09892ed68be441e4d8f6656e77d.png)
在./app/bin/Debug/netcoreapp1.1/文件夹中查找,每个平台都有一个目录,每个目录都有一个发布文件夹。 该文件夹中不仅是应用程序的本机版本的副本,而且还包含运行所需的所有.NET库的副本,因此您无需在目标系统上安装.NET。 只需将文件复制到一个干净的盒子中,然后为您所在的平台运行可执行文件。
![文件输出截图 file output screenshot](https://i-blog.csdnimg.cn/blog_migrate/84b3fd0091c80e7a6cf64c7532f84470.png)
![运行输出 run output](https://i-blog.csdnimg.cn/blog_migrate/0b845cd4cdee57150153dc910bea38eb.png)
结论
使用C#和新的.NET Core平台,您可以在任何平台上构建应用程序并将其发布到任何平台上-100%的代码重用,完全本机,无需运行时或框架安装。 您可以在GitHub上看到支持此技术的新框架(运行时源也在GitHub上 )。 对于C#和整个.NET平台来说,这是令人兴奋的时刻。
翻译自: https://opensource.com/article/17/5/cross-platform-console-apps
.core 控制台应用程序