如何利用github搭建博客.NET Core搭建跨平台的控制台应用

.Net Core入门简介 - 简书
.Net Core入门简介
.net跨平台前世今生
.NET Core And .NET Framework
.NET core 1.0并不是对原有的.net平台的升级,而是一次全新的重写,这个开发过程微软也史无前例的采用了全面开源的做法,在github上接受全球开发者的pull request。从上图可以看出,.NET core与现有的.net framework是并行的,是完全独立发展的一套开发平台。与之前的.net framework最大的区别在于跨平台,同时支持Windows/macOS/Linux 这三大操作系统。在GitHub上.NET Core的发布时间线可以看到在过去的2年里,微软一步步的将.NET 从Windows操作系统上剥离,逐步添加了对macOS和Linux操作系统的支持,同时与开源社区的合作也在逐步加深。
2014年7月 - 微软在github上发布了asp.net vNext(也就是asp.net 5)的前身,这时还是alpha阶段
2014年11月 - 发布了beta1,并且开始使用asp.net 5的名称
2015年10月 - 发布了beta8,这是最后的一个beta版本,这一年的时间里,微软逐步提供了对于macOS和Linux操作系统的支持;同时随着 Visual Studio Code 这个跨平台代码编辑器的流行,大家慢慢开始关注asp.net 5
2015年11月 - 发布了RC1,标志着asp.net 5基本具备了使用在生产环境的能力
日 - 在RedHat全栈开发者大会DevNation上,微软与RedHat携手发布了Asp.net Core 1.0,标志着微软这一跨平台开发工具的正式发布
.net core 是一个通用的,模块化的,跨平台并且开源的 .NET标准的实现。它包含来一个运行时,基础框架类库,编译器和一些工具以支持不同的CPU和操作系统。
项目的GitHub地址:
2016.6 发布1.0
2016秋季 发布1.1
广泛的API支持,让.NET Framewok和Mono在BCL级别上等价。
过渡把MSBuild和的csproj作为.NET的所有版本的默认生成系统和项目模型。
Version 1.0 OS Support:
Architectures
Configurations
Windows Client
7 SP1 - 10
Windows Server
2008 R2 SP1 - 2016
Full, Server Core, Nano (2016 only)
Red Hat Enterprise Linux
14.04 LTS, 16.04 LTS
Linux Mint
Oracle Linux
10.11 (El Capitan)
.net standard
.NET Standard Library 是所有.NET运行时.NET API的正式规范,目的是为.NET 生态系统建立更大的统一性。
.NET Standard Library实现了以下主要方案:
1. 定义了统一的BCL APIS(标准类库接口),所有的.NET平台去实现它,独立的工作量
2. 允许开发人员编写可移植类库,使用相同的API运行在跨.NET 运行时上。
3. 减少和消除那些希望共享源代码的但是需要加入编译预处理命令做条件编译的的.NET API和那些仅适用于OS的API。
各种.NET运行时实现了.NET标准库的特定版本。每个.NET运行时版本发布,它支持最高.NET标准版,这意味着它也支持以前的版本的声明。(向下兼容)
.NET Framework 4.6 实现.NET Standard Library 1.3,那么意味着 它支持.NET Standard Library versions 1.0 through 1.3.又比如.NET Framework 4.6.2 实现 .NET Standard Library 1.5,while .NET Core 1.0 实现了 .NET Standard Library 1.6.
.NET Standard关系图
Target Platform Name
.NET Platform Standard
netstandard
netcoreapp
.NET Framework
Universal Windows Platform
Windows Phone
Windows Phone Silverlight
Mono/Xamarin Platforms
.NET Platform Standard version mapping
.NET Platform Standard version
NuGet identifier
netstandard1.0 - netstandard1.6
Specific platform mapping
NuGet identifier
.NET Framework 2.0 - 4.6
net20 - net46
netcoreapp
.NET Micro Framework
win8, netcore45
Windows 8.1
win8, netcore451
Windows Phone Silverlight (8, 8.1)
Windows Phone 8.1
Universal Windows Platform 10
uap10.0, netcore50
Silverlight 4, 5
MonoAndroid
monoandroid
Xamarin iOS
xamarinios
Xamarin PlayStation 3
xamarinpsthree
Xamarin PlayStation 4
xamarinpsfour
Xamarin PlayStation Vita
xamarinpsvita
Xamarin Watch OS
xamarinwatchos
Xamarin TV OS
xamarintvos
Xamarin Xbox 360
xamarinxboxthreesixty
Xamarin Xbox One
xamarinxboxone
弃用的包名
Deprecated NuGet identifier
Current NuGet identifier
ASP.NET 5.0 on .NET Framework
ASP.NET 5.0 on .NET Core
aspnetcore50
netcoreapp1.0
DNX on .NET Framework 4.5.1 - 4.6
dnx451 - dnx46
net451 - net46
DNX on .NET Core 5.0
netcoreapp1.0
.NET Standard Application 1.5
netstandardapp1.5
netcoreapp1.0
.NET Platform 5.1 - 5.6
dotnet5.1 - dotnet5.6
netstandard1.0 - netstandard1.5
.NET Platform 5.0
netstandard1.3
win8 or netcore45
最好的方式:
ps:如果已经安装了 vs2015 update3 在安装.NET Core 1.0.0 - VS 2015 Tooling Preview 2时还是提示没有安装update3,
可以使用“SKIP_VSU_CHECK=1”这个参数忽略vs的检查。
在命令行使用: DotNetCore.1.0.0-VS2015Tools.Preview2.exe SKIP_VSU_CHECK=1 进行安装。
可以通过下载源码编译安装,也可以通过包管理器安装,具体参考
安装Homebrew
安装一些依赖环境
brew update
brew install openssl
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
安装.Net Core SDK
最好的方式就是下载pkg的包进行安装
安装好之后会将工具的路径加入到PATH中。
装好环境后用运行命令 dotnet 进行检验
dotnet命令介绍
dotnet new
初始化一个 .NET项目
dotnet restore
使用NuGet还原在项目文件project.json 中定义的依赖关系和项目特定的工具。
注:运行 dotnet 还原生成一个锁文件 project.json.lock,其中包括有关所有被恢复的软件包的详细的信息。
dotnet build
生成.NET项目
build命令会把项目和他所依赖的项目编译成一个二进制文件,默认情况下二进制文件是IL 和.dll 为文件扩展名。编译过程依赖于已经存在锁文件project.json.lock,这是restore命令生成的。
为了生成一个可执行的应用程序,您需要确保该项目配置的编译选项设置应用的入口点︰
"buildOptions": {
"emitEntryPoint": true
dotnet run 编译执行一个.NET项目
dotnet pack 创建一个nuget包
pack命令编译项目并生成NuGet包,该操作会生成两个NuGet程序包:
一个包括已编译代码的程序集文件
一个包括调试符号和已编译代码的程序集文件
项目依赖的NuGet项目添加到生成nuspec文件中,默认情况不打包项目之间的引用关系,但可以通过更改项目的相关性类型。
dotnet test 用Test运行工具运行项目中指定的单元测试
dotnet publish 发布.NET项目(包括运行时)
发布命令会编译应用程序并读取项目文件,
然后将结果集的文件发布到一个目录。生成目录的内容将取决于项目的类型,但可以包括一个跨平台的 IL 应用程序和他依赖项,
这就是通常用的Portable部署方式,
应用程序共享.NET Core运行时环境与程序集依赖,
部署的目标机器上需要事先安装.NET Core SDK,
然后用dotnet命令运行程序。或者是每个本机平台的子文件夹或自包含的应用程序,
其中包括目标平台的运行时,这就是Self-contained部署方式。
Self-contained部署方式就是每个应用程序自带.NET Core运行时环境与程序集依赖,
部署的目标机器不需要安装.NET Core SDK,将应用程序文件夹拷贝过来就能运行。
默认的project.json编译出来的应用没有包括跨平台,需要修改project.json文件,需要在 project.json 加入 runtimes 节点 注释掉 "type": "platform"。
"version": "1.0.0-*",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
"dependencies": {"hwapp":"1.0.0"},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0"
"imports": "dnxcore50"
"runtimes":{
"win7-x64": { },
"win7-x86": { },
"osx.10.10-x64": { },
"osx.10.11-x64": { },
"ubuntu.14.04-x64":{ },
"centos.7-x64":{}
具体参考文档参考文档
具体的用法可以通过
dotnet [new|restore|build|run|pack|publish|test] -h 获取
Visual Studio 2015
Visual Studio Code
Project Rider(JetBrains)
Project Rider简介
Project Rider项目呢是一个新的C#的IDE,它基于IntelliJ和Resharper。
目前的话它打开和识别项目依赖于.sln 和 .xproj 和.csproj文件。但是.net core项目使用global.json和project.json文件来描述解决方案和项目。以后的话对于.net core的程序,依赖于global.json和project.json文件识别项目。
DNX projects use a global.json and project.json files to describe a solution and projects. Rider cannot yet open DNX projects based on these files, and requires a .sln file and all projects to also have a .xproj file. These can be generated by opening the solution in Visual Studio. Rider itself does not use these MSBuild files, but talks directly to the DNX Design Time Host. Future builds will open DNX projects based on global.json and project.json.
根据最新的消息,.net core 项目组要取消project.json和global.json,重新使用MSBuild和.csproj
用dotnet命令 创建一个.netcore控制台项目
mkdir dotnetcoreapp
cd dotnetcoreapp
dotnet new
dotnet restore
dotnet run
Project dotnetcoreapp (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling dotnetcoreapp for .NETCoreApp,Version=v1.0
Compilation succeeded.
0 Warning(s)
0 Error(s)
Time elapsed 00:00:01.4853106
Hello World!
项目结构如下所示:
├── Program.cs
├── bin
└── Debug
└── netcoreapp1.0
├── dotnetcoreapp.deps.json
├── dotnetcoreapp.dll
├── dotnetcoreapp.pdb
├── dotnetcoreapp.runtimeconfig.dev.json
└── dotnetcoreapp.runtimeconfig.json
├── obj
└── Debug
└── netcoreapp1.0
├── dotnet-compile-csc.rsp
├── dotnet-compile.assemblyinfo.cs
└── dotnet-compile.rsp
├── project.json
└── project.lock.json
用dotnet命令 创建一个.netcore Web项目,再用vs code进行debug
mkdir dotnetcoreapp
cd dotnetcoreapp
dotnet new -t Web
dotnet restore
dotnet run
Project dotnetcoreapp (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling dotnetcoreapp for .NETCoreApp,Version=v1.0
Compilation succeeded.
0 Warning(s)
0 Error(s)
Time elapsed 00:00:03.9491092
info: Microsoft.Extensions.DependencyInjection.DataProtectionServices[0]
User profile is available. Using '/Users/cjt908/.aspnet/DataProtection-Keys' keys will not be encrypted at rest.
Hosting environment: Production
Content root path: /Users/cjt908/Desktop/dotnetcoreapp
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.
用vs code 打开项目
当我们第一次打开的时候,会出现缺少debug文件,点击yes即可。
缺少配置文件提示
此时会会生成一个隐藏的文件夹,里面有两个配置文件。
修改HomeController里的Index方法,然后断点调试。
提示分两种,一种是直接启动web调试,另外一种是附加进程调试,跟visual studio里面的类似。
断点调试和监控变量
用Project Rider创建一个netcore项目
去JetBrains官网填写一些个人信息,然后订阅一下,就会收到一份邮件,里面有相关下载的链接,下载好之后进行安装。
软件的首页
创建一个.net core 项目
创建好以后的界面
在Main方法里输出Hello World,并且编译运行。
但是会报错,
Unable to perform Build: Select toolset to perform build
但是我们通过命令去运行的话,是可以正常编译的。
这是因为目前Rider不能基于global.json和project.json识别项目。
我们需要MSBuild或者XBuild来编译项目。
注:因为微软弃用global.json和project.json,所以这个计划应该不会再继续执行。
最简单的解决方案,就是下载mono,安装包里自带里MSBuild,不怕麻烦的话也可以去github下载编译。
执行效果图
项目结构图
用visual studio 2015 创建一个简单的.netcore项目
这个难度最低,和平时操作无多大区别。
ASP.NET Core
什么是ASP.NET Core? ASP.NET Core 是一个新的开源和跨平台的框架,用于构建如 Web 应用、物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。ASP.NET Core 应用可运行于 .NET Core 和完整的 .NET Fra...
日 本文作者是 Managed Languages 团队项目经理 Lucian Wischik。 不久前,Visual Studio 2015上新增 Windows 10 应用的开发工具——Universal Windows App开发工具。这个发布拥有重...
ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行核心框架ASP.NET Core APP 创建与运行总结 之前两篇文章简析.NET Core 以及与 .NET Framework的关系和.NET Core的构成体系从总体上介绍.NET Core,接下来...
.NET Standard 2.0 发布日期:日公告原文地址 前言 早上起来.NET社区沸腾了,期待已久的.NET Core 2.0终于发布!根据个人经验,微软的产品一般在2.0时会趋于成熟,所以一个新的.Net开发时代已经来临!未来属于.NET Core...
今日花卉:爆仗竹 铅笔起草图。 勾勒轮廓。 细化枝叶。 书写资料信息,签字。 数月的花期,令无数人喜欢,攀缘一族,一院子一墙壁的富贵吉祥,希望送给你!
疏疏散散的想写一些东西,潦草开头也总草草收笔,越是沉静下来,越是能发现自己的不足,有的时候会发现这些不足,多到不知道要以何种形式去弥补。 大学四年若说我学会了什么,大概就是人生有一万种可能,决定你成为某一种可能的是自己在无数个路口一次次的选择。还有就是厨艺,厨艺精进其实也表...
十五岁觉得游泳难,放弃游泳,到十八岁,遇到一个你喜欢的人,约你去游泳,你只好说我不会耶。十八岁觉得英文难,放弃英文,28岁出现一个很棒、但要会英文的工作,你只好说我不会呀!前期越嫌麻烦,越懒得学,后来就越可能错过让你心动的人和事。
上周五我们在线下做年目标制定,小伙伴们知道我和锤做思维导图训练营,一定要上我们两个的课程。感恩大家的信任和一些小伙伴们的期待,实在不忍心去拒绝大家。本月底为这些等待的小伙伴开一期课程。 来感受一下我们线下的相聚 小伙伴对预备营的期待 本期的课程 学员作品 学员评价没有更多推荐了,
不良信息举报
举报内容:
如何利用.NET Core搭建跨平台的控制台应用程序
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Net Core2.0如何实现WInform (界面程序)程序跨平台运行? - 知乎19被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答blogs.msdn.microsoft.com不过!这些都是Windows专用的,所以不太符合题主的跨平台需求。----因为M$对于 .NET Core 的定位主要是在控制台应用程序、尤其是
Core 服务程序方面,因此现在微软官方并没有推出面向 .NET Core/.NET Standard 的图形界面库。不过网上已经出现一些开源库来尝试改善这一问题,比如:让你在.NET Core上获得强行WPF开发的体验。但根据之前试用的体验,设计器有点缓慢。:让你在.NET Core上获得强行electron开发的体验。既然.NET Core适合用来搞ASP.NET Core,聪明的开发人员当然就想到了使用.NET Core来替代nodejs,作为electron的服务端。而electron本来就是跨平台的,所以……不过不论如何,要想实现从WinForm到这两个平台上的平滑过渡,可能还是需要一些功夫的。53 条评论分享收藏感谢收起没有更多推荐了,
不良信息举报
举报内容:
.NET 使用 .NET Core 跨平台运行
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!如何利用.NET Core搭建跨平台的控制台应用程序
尽管传统意义上来说,.NET是只面向Windows的、闭源的专有平台,然而,传统观念即将被颠覆。新的开源跨平台的.NET Core已经开启,意味着你可以在任意平台写C#或.NET,然后在Windows、Linus和macOS运行。
这个新的.NET平台正在GitHub上尝试对外开放,主要用到MIT和Apache的许可证,甚至还接收社区贡献。新平台的设计理念源自以往的开源编译器Roslyn(.NET编译器平台),目的在于不局限于Windows或Visual Studio,而是允许开发者在任意集成开发环境(IDE)中使用任意系统,然后在任意服务器或平台运行程序。
为了演示这个新平台,我们搭建一个超级简单的控制台应用程序,然后使用新的dotnet命令行接口(CLI)在Windows和Linux上运行。开始之前,需要先安装.NET Core(包含dotnet CLI工具)。微软的在线文档中为大多数平台(包括各种各样的发行版)提供完整的软件文档。
如果你不想在本地安装.NET Core,微软/dotnet:最新Docker图片预置了所有最新的工具和SDK。
搭建新程序
.NET Core版本迭代很快,我写的这些主要适用于当时的最新版本。
首先,我们用dotnet的新控制台搭建一个新的控制台应用程序,然后自动生成一个Program.cs和 .csproj,这是以当前的目录命名的(我的名为app.csproj)。
为了验证可行性,尝试运行一下dotnet restore,这个可以恢复运行程序需要用到的所有包。这个步骤完成后,运行dotnet run,然后你就可以在控制台看到关键信息Hello,World!了。
添加逻辑功能
在你最喜欢的文本编辑器中打开Program.cs,然后用下面的内容替换Console.WriteLine(“Hello World!”);,因为.NET与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。注意,这里的代码并不是针对某一个指定的平台。
运行新程序
如果你现在运行dotnet build,你会得到一个.dll文件,还会有其他文件添加到你的./bin/Debug文件夹。你已经写了一段跨平台的控制台程序,将那些文件复制到另一台运行.NET Core的机器——Linux或者OS X也可以,然后运行dotnet ./path/to/your/app.dll,你将看到和前面一样的输出,然而你用的仍然是本地运行环境。幸运的是,.NET Core可以在一个独立包中搭建和发布本地二进制文件,所以你的目标系统(或用户)不用安装.NET也可以运行程序。
尝试其他平台
要想尝试跨平台应用程序,我们必须先确定用于搭建平台的.NET Core SDK,由于这个过程涉及到本地库,除了指明需要用到的平台以外,还需要确定风格和版本。
在应用目录中打开.csproj文件,将下列XML标签添加到各标签中:
&propertygroup&&runtimeidentifiers&win10-x64;osx.10.12-x64;debian.8-x64&/runtimeidentifiers&&/propertygroup&
这样,.NET就知道我们想要为Windows 10 64-bit、macOS Sierra和Debian 8搭建一个独立的应用程序,接下来要做的就是运行之前选择的环境下的dotnet publish,然后在每一个平台上编译本地二进制文件。
注意一下,在./app/bin/Debug/netcoreapp1.1/文件夹中每一个平台都有对应的目录,每一个目录都有对应的publish文件夹,这个文件夹里有你的本地应用程序的副本,还有所有需要运行的.NET库的副本,所有没必要在目标系统上安装.NET,只需要把这些文件复制到一个新的文件夹然后运行可执行文件就好了。
使用C#和新的.NET Core平台,你可以在任意平台搭建应用程序,再将它发布到任意平台——100%代码复用、完全本地、无运行时、不用安装框架。来GitHub吧,你可以看到新的框架让这项技术更加强大!不管对于C#还是.NET,这都是非常激动人心的时刻!
原文地址:https://opensource.com/article/17/5/cross-platform-console-apps
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点}

我要回帖

更多关于 利用github搭建博客 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信