对于.NET开源计划想必关注的人已经跃跃欲试了,但是真正将其用于开发的目前来说不多。毕竟截至本文发布时.NET Core才发布到1.0RC2版本。正式版预计还有一段时间。况且大多数人都是持观望态度,就算开发仍然用的还是.NET Framework。另外不得不说的一点就是.NET开源的进度很惊人但是社区建设还有待提升,很多配套的东西还不齐全。Java在语言层级上可能落后.NET但是Java的社区力量是.NET远不及的。

一、安装SDK

.NET Core发布版:https://www.microsoft.com/net/core

.NET Core提供了核心的运行组件,要用到的模块都是通过NuGet方式来获取的。开发可以完全不依赖于.NET Framework和平台。但是.NET Core的功能没有.NET Framework那么全。Web领域的WebForm已经被舍弃了。WinForm目前也不再开源计划内。想用的还是慎重些,毕竟这只是一个开始。

1.windows平台安装SDK

直接下载并安装即可。https://go.microsoft.com/fwlink/?LinkID=798398

2.Linux平台安装SDK(测试系统为:Ubuntu 14)

官方指导手册:https://www.microsoft.com/net/core#ubuntu

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet/ trusty main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893
sudo apt-get update
sudo apt-get install dotnet-dev-1.0.-preview1-

主要有几个注意的点:

Ubuntu 16在测试时使用apt-get安装不成功。目前只在Ubuntu14测试成功。

直接使用:apt-get install dotnet 获取到的版本不清楚,看安装之后的版本号貌似是最新的,但是创建出来的项目又不是最新的。所以安装时还是按照官方给的方式指明版本号。

3.安装完成进行环境测试

使用指令:

dotnet --info

测试结果如下:

C:\>dotnet --info
.NET Command Line Tools (1.0.-preview1-) Product Information:
Version: 1.0.-preview1-
Commit Sha: 6cde21225e Runtime Environment:
OS Name: Windows
OS Version: 10.0.
OS Platform: Windows
RID: win10-x64
yoli@ubuntu:~$ dotnet --info
.NET Command Line Tools (1.0.-preview1-) Product Information:
Version: 1.0.-preview1-
Commit Sha: 6cde21225e Runtime Environment:
OS Name: ubuntu
OS Version: 14.04
OS Platform: Linux
RID: ubuntu.14.04-x64

二、创建HelloWord程序

1.创建控制台项目:

mkdir hwapp
cd hwapp
dotnet new

使用的dotnet new指令来快速创建项目。

dotnet new –t Console 创建控制台项目。目前项目类型只能创建控制台项目,没有其它可选类型,希望后期可以创建更多项目模板。

dotnet new –l C# 使用C#语言创建项目。目前只支持C#和F#。

编译并运行项目:

dotnet restore
dotnet run

使用dotnet resotre来还原包引用

使用dotnet run运行程序

使用dotnet build编译代码

使用dotnet publish 发布项目

详细指令参数请查看指令的帮助说明。

2.创建Web项目

由于创建指令并不支持创建Web项目,所以不能直接使用创建指令来创建,当然可以使用手工方式创建project.json来创建项目,这样做并不明智。可以借助于一些工具和模板来快速创建项目。

可用的模板案例:https://github.com/aspnet/cli-samples

可以直接使用Git工具复制到本地使用。

另外需要注意的:

dnx的启动方式目前在新版本中已经不使用了,全部改为dotnet指令。Web项目启动方式和Console项目的启动方式一样。

Linux运行效果如下:

三、使用编辑器

引用官方的宣传标语:

It is very easy to get started with .NET Core on your platform of choice.

You just need a shell, a text editor and 10 minutes of your time.

感觉形容的很贴切,但是估计会有一大堆人蒙逼了。VS都不用了还怎么开发?官方说只需一个文本编辑器即可,放着如此强大的VS不用改用文本编辑器开发,开发者会接受吗?就我而言愿意改变的只是很少一部分人。毕竟绝大多数还是在Windows平台上开发,最终还是选择还是用windows+VS开发,发布时可能选择其它平台来发布。这对于其它平台工具链的形成是十分不利的。

1.安装VSCode

下载并安装VSCode:https://www.visualstudio.com/en-us/products/code-vs.aspx

安装C#开发支持插件

打开VSCode使用Ctrl+P调出指令栏,输入安装指令:

ext install csharp

插件官网:https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp

安装完成,会提示重启VSCode,重启之后即可进行开发了。

2.使用VSCode编译运行项目

使用VSCode打开创建好的项目文件夹即可。默认项目没有.vscode文件夹,打开之后会在上方的消息栏提示,点击确定之后就会自动创建.vscode文件夹了。

该文件夹下包含:

launch.json和tasks.json两个文件,用来配置调试器和调试指令用的。

打开代码文件会发现代码会有很多异常信息,一般都是引用的包没有加载,可以使用restore指令来还原或者等VSCode加载完成即可,可能会在通知栏提示还原包。

调试运行使用F5即可。C#调试插件提供了以下几种方式启动调试,使用Web启动会默认会自动打开浏览器。断点调试单步跟踪基本差别不是很大,日常开发足够用。

运行效果如图:

需要注意的问题:

(1)如果跳过了添加调试器的步骤,有可能编译时报错。只需要launch.json修改对应的参数即可。如:

(2)Troubleshooting 'Error while installing .NET Core Debugger'

如果有上述提示,请使用dotnet --info 看能否输出正常信息,如果不行,请重新安装.NET Core SDK的支持版本。如果提示restore失败,请检查网络连接。

(3)Windows平台上,如果提示找不到Symbols,则启用Portable PDBs

打开project.json找到buildOptions,将debugType修改为portable,如果找不到buildOptions选项,在老版本中名称叫:compilationOptions

结束语:此次.NET的开源与其说是微软的仁慈倒不如说是一种无奈。另外VSCode在文本编辑以及多项目管理等诸多方面还有很大的提升空间。社区的建设还有很多的空白地方希望能够尽快补充上来。每次看文档资料看到In the future、hasn’t been written yet等词时总是一种莫名的失落感。

.NET Core跨平台开发的更多相关文章

  1. [.net 面向对象程序设计深入](9).NET Core 跨平台开发环境搭建

    [.net 面向对象程序设计深入](9).NET Core 跨平台开发环境搭建 1.概述 读前必备:认识.NET Core 上篇介绍了.NET 新的生态环境:包括.NET Framework..NET ...

  2. 《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf

    <ASP.NET Core跨平台开发从入门到实战>样章节 Web API自定义格式化protobuf. 样章 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于 ...

  3. .Net Core 跨平台开发实战-服务器缓存:本地缓存、分布式缓存、自定义缓存

    .Net Core 跨平台开发实战-服务器缓存:本地缓存.分布式缓存.自定义缓存 1.概述 系统性能优化的第一步就是使用缓存!什么是缓存?缓存是一种效果,就是把数据结果存在某个介质中,下次直接重用.根 ...

  4. asp.net core跨平台开发从入门到实战文摘

    第1章 .NET Core 第2章 dotnet命令 第3章 VS Code安装及介绍 第4章 VS2015开发.NET Core 第5章 ASP.NET Core 第6章 EF Core 第7章 A ...

  5. .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡

    1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...

  6. ASP.NET Core WebAPI 开发-新建WebAPI项目 转

    转 http://www.cnblogs.com/linezero/p/5497472.html ASP.NET Core WebAPI 开发-新建WebAPI项目   ASP.NET Core We ...

  7. .NET Core:面向未来的开源跨平台开发技术

    作为一种全新的开源和跨平台的开发平台,.NET Core 历经两年多的开发,终于在于2016年6月27日针对所有主流服务器和桌面操作系统发布 1.0 RTM 版本..NET Core 是一种通用开发平 ...

  8. .NET Core跨平台:使用.NET Core开发一个初心源商城总括

    1..NET Core基本介绍 a 作为一个.NET的开发者,在以前的开发中,我们开发的项目基本都是部署在windows服务器上,但是在windows服务器上的话某些比较流行的解决访问量的方案基本都是 ...

  9. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]

    微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...

随机推荐

  1. mvn详解

    1.前言 Maven,发音是[`meivin],"专家"的意思.它是一个很好的项目管理工具,很早就进入了我的必备工具行列,但是这次为了把project1项目完全迁移并应用maven ...

  2. VSFTP被动模式

    搞了几个弯路,各种办法都试了. 动静最小的,还是定义端口. 还有虚拟用户,配置太多,只适用于小范围吧.又要pam.d,又要chroot之类的,nologin也必不可少. ~~~~~~~~~ 限制被动模 ...

  3. Android 使用HttpClient方式提交GET请求

    public void httpClientGet(View view) { final String username = usernameEditText.getText().toString() ...

  4. 使用maven profile实现多环境可移植构建

    mvn clean package -Pproduction即构建出生产环境需要的war包 mvn tomcat:redeploy -Ptest 即发布到测试环境 在开发过程中,我们的软件会面对不同的 ...

  5. Node.js权威指南 (6) - 在Node.js中操作文件系统

    6.1 同步方法与异步方法 / 856.2 对文件执行读写操作 / 86 6.2.1 文件的完整读写 / 86 6.2.2 从指定位置处开始读写文件 / 916.3 创建与读取目录 / 97 6.3. ...

  6. Unity3D屠龙战机项目总结

    之前跟着老师后面边学边做了一个屠龙战机项目,在这个项目中,主要用到的技术,在这里总结一下(本次项目的脚本语言用的是JS): 1.  如果想在场景中导入一个声音文件,则需要在脚本中添加一个变量,如在脚本 ...

  7. BZOJ1015 [JSOI2008]星球大战starwar(并查集)

    1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 3895  Solved: 1750[Submit ...

  8. MIPI D-PHY 简写收集

    Acronyms APPI         Abstracted PHY-Protocol InterfaceBER            Bit Error Rate 417 CILControl ...

  9. ACM2096_小明A+B

    #include<iostream> int main() { using namespace std; int a,b,count; cin>>count; while(co ...

  10. 使用devpartner的blockchecker检查c++内存错误

    在仿写stl的过程中,被一处内存错误卡了很久.当内存池需要多次malloc时会出现堆损坏的错误,初步判断是数组越界,但总是检查不出来.一开始用Dr.Memory检查不出来,就试了一下devpartne ...