虽然 .NET 传统上是一个仅限 Windows 的闭源专有平台,但这些日子即将结束。新的 .NET Core 平台已经到来,它是开源且跨平台的。现在你可以编写一次 C#/.NET 代码,在任何平台上,并在 Windows、Linux 和 macOS 上运行它。
这个新的 .NET 平台正在 GitHub 上以开放方式构建,主要使用 MIT 和 Apache 许可证,甚至接受社区贡献。这个新平台从头开始围绕之前开源的 Roslyn compiler (.NET 编译器平台) 构建,并且被设计为不与 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 restore,这将恢复运行你的应用程序所需的任何包。完成之后,运行 dotnet run,你应该会在控制台中看到非常重要的 Hello, World!。
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 文件,并在
<PropertyGroup>
<RuntimeIdentifiers>win10-x64;osx.10.12-x64;debian.8-x64</RuntimeIdentifiers>
</PropertyGroup>
这告诉 .NET 我们想要为 Windows 10 64 位、macOS Sierra 和 Debian 8 构建一个自包含版本的应用程序。现在你需要做的就是为你之前选择的每个运行时运行 dotnet publish,以便为每个平台编译本机二进制文件
查看 ./app/bin/Debug/netcoreapp1.1/ 文件夹,那里将有一个针对我们每个平台的目录,每个目录都有一个 publish 文件夹。在该文件夹中不仅包含你的应用程序的本机版本副本,还包含运行所需的所有 .NET 库,因此你无需在目标系统上安装 .NET。只需将文件复制到干净的机器上,并为你所在的平台运行可执行文件即可。
结论
使用 C# 和新的 .NET Core 平台,你可以在任何平台上构建应用程序,并将其发布到任何平台——100% 代码重用,完全原生,无需运行时或框架安装。你可以在 GitHub 上看到为这项技术提供支持的新框架(运行时源代码也在 GitHub 上)。对于 C# 和整个 .NET 平台来说,这是一个激动人心的时代。
4 条评论