.NET Core:编译一次,到处运行

介绍 关于将。net框架引入Windows以外的平台的讨论从一开始就存在(毕竟,强大的竞争对手无处不在)。大约两年的讨论变成了行动,微软开始塑造我们今天所说的。net Core——一个“跨平台、开源、模块化的。net平台,用于创建现代web应用、微服务、库和控制台应用(。NET Blog——2016年6月27日)”。 我是一个开源和。net的狂热爱好者,所以我从一开始就和Mono打交道,后来又和Xamarin打交道,最终我对。net Core的消息感到很兴奋。 在这里,我想展示使用。net Core进入跨平台世界的第一步。 背景 非常重要的一点是,要明白。net Core并不是。net Framework的翻版,而是一个新的并行框架,它遵循的是与原始框架相同的原则。它重新实现了所有可以从。net框架跨平台完成的事情。这个重新实现遵循。net标准库(标准ECMA-335),因此。net核心与。net框架兼容。 原始框架中没有实现的是UI相关的库(UI高度依赖于平台/设备),因此。net核心中唯一存在的UI形式就是控制台。然而,这恰恰使它成为图书馆和服务的完美的基础UI -桌面或网络-无论设备。 所有这些赞美的。net核心,重要的是要理解,这是一个新的开始,而不是什么完美和顺利已经与更成熟的。net框架一样,但恕我直言它可以是一个巨大的开放对于那些想要打开新目标的. net应用程序… 设置环境 为了看到奇迹的发生,我创建了两个虚拟机—一个是Windows 7,另一个是Fedora 23。 要查看支持哪些Linux版本以及当前状态,可以查看这里的“构建状态”表:. net Core Runtime。 在这一点上,不要试图聪明地使用一个更新的发行版——它可能不会工作。NET Core有严格的依赖性,甚至拒绝与某些库的新版本一起工作)。 窗户 要安装。net Core,请点击以下链接: x86 - DotNetCore.1.0.0-SDK。preview2 -x86 x64 这些都是常见的安装程序,它们将把。net Core和一个支持SDK放到你的机器上…… 要检查安装情况,请打开一个命令窗口,并在其中输入dotnet—version…答案应该是1.0.0-preview2-003121…… Linux 在Linux上安装可能会有点复杂(取决于发行版本),所以微软提供了一系列页面来帮助你,这里是。net Core安装。 选择你的发行版,现在只按照第一部分的说明去做…… 可以肯定的是,你必须对Linux终端/安装/升级的工作原理有一定的了解,但只有一定的… 要检查安装,您必须运行相同的命令- dotnet -version -这里也是(终端)。答案应该也是一样的。 如果你有一个错误在这一点上,你是有点自己解决它,但我可以提供是这个命令(终端),以帮助发现一些可能的问题: 隐藏,复制Code

find /opt/dotnet -name '*.so' -type f -print | xargs ldd | grep 'not found'

这将列出所有缺少的库,你可以运行一个适合你的发行版的安装/更新命令(/opt/dotnet路径,是你安装。net核心包的地方——如果不同,相应的改变)。 额外奖励-你可以使用一个编辑器 如果你使用的是Windows,我无法提供比Visual Studio更好的东西(可能是Community 2015)。如果你是一个铁杆的Linux开发人员,你将很难从你最喜欢的编辑器(vim, emacs, gedit等),但对于两者之间的情况,我想向你介绍Visual Studio代码(Visual Studio代码)… VS代码是一个基于浏览器的(嵌入的)代码编辑器,封装在一个能够处理项目和扩展的包装器中,有一个内置调试器平台,支持Git和智能感知。 VS代码实际上是迈向跨平台Visual Studio的第一步(根据路线图,在下一个版本(预计2016年第四季度/ 2017年第一季度)中,它将支持标准的Visual Studio项目,而不是当前基于文件夹的带有json项目文件的工作区)。它是轻量级和简单的,但是在所有支持的平台上调试功能强大… 正如我将展示给你的c#代码…VS代码安装只支持节点。默认设置为js、JavaScript和TypeScript,所以你必须为这个示例安装c#扩展名……使用文档查看如何… 最后一点,只是为了让你运球…与Visual Studio一样,您也可以为VS代码编写扩展! 现在试一试…… 真正的魔法 这部分实际上非常简单——因为我并不是要用。net Core重写一些3D图形引擎。我要给你们看的是: 创建一个简单的控制台(Hello World)应用程序从.NET中添加众所周知的进程类,以打印加载的模块编译、运行——偶尔也进行调试——它在Fedora上将编译后的程序集移动到窗口中并运行它——就像现在这样 创建应用程序 现在,您可以使用命令行轻松地创建一个项目(由Json文件定义)。如前所述,在将来,众所周知的Visual Studio项目格式将得到支持,并且会添加更多的创建选项(也有手动选项,但是…)。 要创建一个简单的“Hello World”应用程序,请遵循以下步骤: 打开内置终端(CTRL+ ',或从视图菜单)运行以下命令: mkdir hwapp cd hwapp dotnet新dotnet恢复dotnet运行 (这些行来自微软,从这里:。net Core -初始化一些代码) 现在打开项目(VS代码与基于文件夹的工作区一起工作,所以你实际上必须打开包含的文件夹),使用File/ open folder…菜单。 升级代码 隐藏,复制Code

using System;
using System.Diagnostics;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Process oProcess = Process.GetCurrentProcess( );

            Console.WriteLine( string.Format( "Process: {0} ({1})", 
                               oProcess.ProcessName, oProcess.Id ) );
            Console.WriteLine( );
            Console.WriteLine( "MODULES:" );
            Console.WriteLine( "________" );

            foreach ( ProcessModule oModule in oProcess.Modules )
            {
                Console.WriteLine( string.Format( "	{0} ({1})", 
                                   oModule.ModuleName, oModule.FileName ) );
            }
        }
    }
}

正如承诺的那样,这是一个非常简单的代码更改。但是,您可以注意到,没有任何东西表明它是。net Core的代码。这段代码也可以在完全标记的。net框架下编译(我有没有提到。net Core与。net Framework兼容?) 您还需要注意的是编辑窗口顶部的通知——读取它们并相应地响应,它们主要是关于缺少的东西,比如调试定义和错误…… 要构建应用程序,您可以再次使用终端(dotnet构建)或预定义的构建任务,该任务可以通过CTRL+SHIFT+B调用。 此时,应用程序已经准备好运行了,您可以使用调试器进行调试—以查看它是如何工作的,内置的终端还是外部终端。要从终端运行它,请导航到包含应用程序的文件夹并键入dotnet运行。你会得到一个由你的应用程序加载的模块列表… 到处跑 所以我们来到了这里。现在我们将把应用程序——编译后的版本——移动到Windows系统中,看看它是如何运行的…… 在Fedora (Linux)机器上,您将在'binDebug etcoreapp1.0'文件夹中找到二进制文件。您必须复制的是DLL(是的!)在。net内核下,即使是控制台应用程序也会编译成DLL而不是EXE!)和runtimeconfig。json文件……将两者放在Windows系统中您选择的相同文件夹中。 打开命令窗口并导航到存储二进制文件的文件夹。 输入神奇的命令'dotnet运行'和享受! (比较来自Fedora (Linux)和Windows系统的列表是一件有趣的事情。) 的兴趣点 对我来说,能够只在我的机器上编译一次代码(调试、测试和编写),但之后能够将其分发到一系列良好的操作系统上,这真的很令人兴奋。 我在这里展示的例子是完全愚蠢的,但转向你的想象力,你会看到的可能性……还要记住。net Core和它周围的工具都是开源的,你可以有所作为! 本文转载于:http://www.diyabc.com/frontweb/news17308.html

原文地址:https://www.cnblogs.com/Dincat/p/13494007.html