如果没有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”这个地址进行监听,所以我们利用浏览器像这个地址发送请求会得到如下图所示的响应。
- RBAC新解:基于资源的权限管理(Resource-Based Access Control)
- 基于开源项目搭建属于自己的技术堆栈
- Redis整合Spring项目搭建实例
- SpringMVC+Hibernate +MySql+ EasyUI实现POI导出Excel(二)
- Nginx+Tomcat+Redis负载均衡Session共享实现超级简单(CentOS6.9系统 Java版本)
- Apache Ignite——新一代数据库缓存系统
- 微信JSSDK接入Java版--步骤及问题处理和解决
- 微信企业号回调模式配置讲解 Java Servlet+Struts2版本 echostr校验失败解决
- Android Material Design系列之RecyclerView和CardView
- 在Linux安装ASP.Net Core的运行时(Runtime)
- 使用xUnit为.net core程序进行单元测试(下1)
- Otto开发初探——微服务依赖管理新利器
- Apache Eagle——eBay开源分布式实时Hadoop数据安全方案
- Spring/Hibernate 应用性能优化的7种方法
- 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 数组属性和方法
- 深入理解JavaScript闭包之闭包的使用场景
- Spring Boot 到底是个啥?
- Spring Boot 整合 Thymeleaf
- webapp打包为Android的apk包的一种方法
- Android应用之Hybird混合开发,集成web页面的方法尝试
- Spring Boot 通过 XML 的方式整合 MyBatis
- layUI登录界面验证码功能模块儿封装
- go语言微信公众号开发后台接口封装
- 【DB宝14】在Docker中只需2步即可拥有Oracle 11g企业版环境(11.2.0.4)
- 别忘了给gcc编译器工具链加上-fno-common选项
- 轻量安全的部署方案
- 算法集锦(34) | 强化学习| 出租车载客问题
- 前端测试题:(解析)关于ajax跨域的说法,下面错误的是?
- 什么才是定制化 IDE 的核心价值?
- RTOS内功修炼记(八)— CMSIS RTOS API,内核通用API接口