都说. NET Core 可以跨平台, 说实话 Linux 咱也不太懂, 咱也不敢问. 怎样把一个简单的 Console App 在 Linux 下跑起来, 真是费了我一番功夫. 特做此篇以供指北.
.NET Core 的大饼我就不替某软画了. 接下来我们就做个傻瓜教程, 把 Visual Studio 2019(VS2017 也可以) 开发的 Console App,publish 并且在 Ubuntu 上运行. 就其中遇到的问题以及解决方法和大家讨论.
首先我们准备一下环境. Visual studio 2019 和. NET Core SDK 2.2. 其中 Visual Studio 可以去这个地址:
https://visualstudio.microsoft.com/downloads/
下载免费的 Community 版本. 这个免费的 Community 版本绝对良心, 除了条款写了不能用作商业用途, 跟卖几千刀的版本比并不缺少任何核心功能.
.NET Core 的下载地址:
https://dotnet.microsoft.com/download
Visual Studio 2019(2017) 自带的. NET Core 版本是 2.1, 因为我们会尝试 2.2 版本以后才支持的 publish mode:Framework-dependent executable. 所以还是推荐升级到最新版.
注意 VS2017 需要下载下图这个兼容性 2.2 版本.
准备就绪之后, 开始创建第一个. NET Core 的 Console App. 说实话整个过程和. NET Framework 没有任何区别.
不修改任何一行代码, 即可点击 F5 运行, 会在控制台中输出 Hello World.
然后让我们试一下 publish 功能. 如下图在 project 文件上右键选择 publish.
采用默认的配置, 一路 Next 下去. 会在 Release 文件夹下面生成一个 publish 文件夹, 其中包含了我们 Console App 的发布用版本
打开这个文件夹仔细一看, 发现木的 exe 文件, 莫不是我眼花了?? 这特么怎么运行?? 刚开始把老纸尿都吓出来了. 后来发现这是因为. NET Core 2.x 版本的默认发布方式都是 Framework-dependent deployment(具体 3 种发布方式我们稍后讨论). 意思就是需要通过 dotnet CLI 来运行程序, 可以理解为需要通过 cmd 命令行窗口来启动程序. 而 dotnet CLI 可以通过安装. NET Core Runtime 来获得 (当然你装完整的. NET Core SDK 也可以).
让我们打开 cmd 窗口, 通过 cd 命令进入到 publish 的目录. 然后键入 dotnet dotnetcorehelloworld.dll. 我现在很后悔刚才起了这么长一个名字, 还好 Windows 下不区分大小写. 然后可以在控制台窗口中看到 hello world 的输出了. 和通过 F5 Debug 是一样的.
Windows 下的准备工作已经完成了. 接下来我们试着将这个 Console App 在 Ubuntu 下运行.
首先请大家拿出 Ubuntu 的机器, 什么没有?? 要不要来戴尔买一台?
开个玩笑, 我们穷逼虽然什么都买不起, 但是最懂生活, 没有 Ubuntu 我们可以 5 分钟之内在 Windows 上装一个.
此时此刻, 我突然感觉某软那个 CEO 有点意思, 什么 "予力全球每一人, 每一组织, 成就不凡.". 让我们来体验下某软怎么帮我们学习 Linux 的.
打开 MS Store 搜索 Ubuntu, 第一个大图点开闭着眼睛装呗, 安装过程非常迅速.
安装完成了先别急着点, 要去控制面板的 Windows Features 里勾选 Windows Subsystem for Linux.
找不到的同学直接任务栏搜索或者问 Cortana.
完成以上两步之后, 就可以点击打开橘色的 Ubuntu 了, 第一次打开会有个短暂的配置过程, 然后要求你输入用户名和密码, 和 Windows 的是独立的. 我们只是简单学习使用, 所以随便起个好记的名字和密码就可以了.
打开 Ubuntu 的控制台界面后, 我们希望能访问 C 盘, 键入 cd /mnt/c. 然后再键入 ls, 就能看到 C 盘的文件了, 当然有一些在 Linux 环境下是访问不了的.
为了简单起见, 我们切回 Windows 界面, 将 publish 文件夹拷贝到 C 盘根目录. 然后只需要 cd publish 就可以找到我们的程序了.
非常遗憾我们还不能通过 dotnet 命令运行程序, 因为我们根本就没在 Linux 环境下安装. NET Core 的 runtime 啊! 没有图形环境的话, 只能敲命令行安装了, 参考下面的链接:
记得选 Ubuntu 18.04, 之后只管一通乱敲. 不放心的话可以通过这个 Linux 命令确认 Ubutu 版本: lsb_release -a
完成这步安装后, 只要简单的键入 dotnet DotNetCoreHelloWorld.dll 就可以运行程序了. 注意 Linux 下区分大小写. 现在知道为什么要把 publish 拷出来了吧, 不然 cd 目录累死人.
至此大功告成! 感谢各位看到这里, 想必各位还有很多疑问, 我们后面再接着讨论.
这个 Hello World 工程我就不上传 GitHub 了. 各位自己实验吧, 如果怀疑 Windows subsystem for Linux 的真实性, 那么就来戴尔买个 Ubuntu 的机器 ^O^
来源: https://www.cnblogs.com/manupstairs/p/11171060.html