如果没有Visual Studio 2015,我们如何创建.NET Core项目 ?
对于.NET开发人员来说,我们已经习惯了VS这个世界上最强大的IDE,所以对他们来说,项目的创建直接利用安装到VS中相应的项目模板即可。当.NET Core跨出了Windows的围栏,正式拥抱其他平台,意味着VS已经不再是唯一的IDE。于此同时,.NET Core充分借鉴了目前非常流行的基于“脚手架(Scaffolding)”的源文件生成方式,在它的核心命令行“dotnet”也添加了脚手架的命令行开关。除此之外,.NET Core真正对社区敞开胸怀,我们可以直接利用现有的脚手架工具Yeoman来生成.NET Core项目。接下来我们就来介绍一下两种生成.NET Core项目的方式。
一、利用dotnet命令创建.NET Core 项目
如下图所示,我们通过命令行为目标项目创建一个根目录。在将当前目录切换到这个根目录之后,我们直接执行“dotnet new”命令会生成一个简单的Hello World控制台应用。在通过执行“dotnet restore”命令恢复依赖的NuGet包之后,我们可以直接执行“dotnet run”命令启动该控制台应用。
直接执行“dotnet new”创建的控制台应用只包含如下两个文件,其中包含程序入口方法的所有C#程序定义在Program.cs 中,另一个则是项目描述文件project.json。
除了利用“dotnet new”命令创建控制台项目之中外,我们还可以利用它来创建其他类型的项目。项目类型通过命令行选项“-t”来指定,如下图所示,目前具有四种类型可供选择,它们分别是Console、Web、Lib和xunittest .
接下来我们来演示一下如何创建一个web项目。如下图所示,在将当前目录切换到我们为目标项目创建的目录(demo2)后,我们直接执行命令“dotnet new –t web”,该命令会为我们创建一个完整的Web应用。
被创建出来的这个Web应用实际上是一个ASP.NET Core MVC项目,如下图所示,它具有一个完整的目录结构。
在通过执行“dotnet restore”命令恢复依赖的NuGet包之后,我们可以直接执行“dotnet run”启动这个MVC应用。应用启动之后,默认注册的服务器绑定到“http://localhost:5000”这个地址进行监听,所以我们利用浏览器像这个地址发送请求会得到如下图所示的响应。
二、利用Yoeman创建项目
对于Yoeman这个脚手架工具,相信大家都应该很熟悉了。如果安装了针对ASP.NET的Generator,我们就能够利用它来生成各种类型的 ASP.NET Core应用(至于这个针对ASP.NET的Generator,我们可以通过执行“npm install –g generator-aspnet”进行安装)。如下图所示,当我们直接执行命令行“yo aspnet”,它给给我们若干项目类型供我们选择。我们选择了第一个选项“Empty Web Application”来创建一个空的Web应用。在这之后,我们按照提示输入项目名称(demo3),一个空的ASP.NET Core项目将自动被创建出来。
在通过执行“dotnet restore”命令恢复依赖的NuGet包之后,我们可以直接执行“dotnet run”启动这个Web应用。应用启动之后,默认注册的服务器绑定到“http://localhost:5000”这个地址进行监听,所以我们利用浏览器像这个地址发送请求会得到如下图所示的响应。
- SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易
- [基础]datagridview绑定数据源的几种常见方式
- c#:winform鼠标拖动窗口大小时,设定窗口最小尺寸
- 在非SqlServer数据库上实现MemberShip和Role功能(自定义MemberShipProvider和RoleProvider)
- 一种实用的表格行鼠标点击高亮效果
- Lucene:QueryParser中操作符的疑惑
- 利用Boost影响Lucene查询结果的排序
- 利用Boost影响Lucene查询结果的排序
- linq to sql取出随机记录/多表查询/将查询出的结果生成xml
- [原创]Func〈T, TResult〉 泛型委托 以及演变历程(整理自MSDN)
- 上市企业4位数秒下的域名 如今9.9万元出售
- 黑客横行,全球安全系统集成市场将破百亿美元
- 有好东西融资2000万美金:官网启用四拼域名
- 全球首个农业全产业链智能工程“农业大脑”入选ECI
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Redis:持久化
- Flutter基础widgets教程-IconButton篇
- Flutter基础widgets教程-Image篇
- Go - 学习 grpc.Dial(target string, opts …DialOption) 的写法
- Flutter基础widgets教程-IntrinsicHeight篇
- Flutter基础widgets教程-Baseline篇
- springcloud本地开发的微服务如何调用远程k8s的微服务
- Flutter基础widgets教程-LimitedBox篇
- 算法:滑动窗口(二)
- Flutter基础widgets教程-LinearProgressIndicator篇
- Flutter基础widgets教程-ListTile篇
- 深入剖析 linux GCC 4.4 的 STL String
- Flutter基础widgets教程-MaterialApp篇
- 如何使用Visual Studio Code开发Django项目
- Flutter基础widgets教程-Padding篇