尽管 .NET 传统上是一个仅限 Windows 的闭源专有平台,但这些日子即将结束。新的 .NET Core 平台已经问世,它是开源且跨平台的。您现在可以编写一次 C#/.NET 代码,在任何平台上,并在 Windows、Linux 和 macOS 上运行它。
这个新的 .NET 平台正在 GitHub 上公开构建,主要使用 MIT 和 Apache 许可证,甚至接受社区贡献。这个新平台从头开始围绕之前开源的 Roslyn 编译器(.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,您将获得添加到 ./bin/Debug 文件夹中的 .dll 和其他文件。您已经编写了一个跨平台控制台应用程序。将这些文件复制到另一台运行 .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 条评论