ASP.NET Core 1.0 入门——了解一个空项目

警告

您当前查看的页面是未经授权的转载!
如果当前版本排版错误,请前往查看最新版本:http://www.cnblogs.com/qin-nz/p/aspnet5-empty-project-introduction.html

提示

更新时间:2015年12月12日。

ASP.NET Core 1.0 RC1 发布已经有一个星期了,因为以前一直是bate版,很多东西都会变,因此一直没有写随笔。
从今天开始,我将为大家带来一系列的 ASP.NET Core 1.0 教程。

注解

如果你在使用 Mac OSX ,可以参考 这篇文章 ,来配置环境。

创建一个空项目

虽然相信大家不会只创建个Empty的项目,但只要这个最简单,适合作为入门讨论。
首先使用 Visual Studio 2015 创建一个空的项目。

注解

如果你是在使用 Linux/Mac OS,请参考 Your First ASP.NET Core 1.0 Application on a Mac

Visual Studio 2015 在Web目录下有三项可选,选择第一项会开启一个向导,在这里可选 ASP.NET 4.5 或者 ASP.NET Core 1.0 的项目。而后两项是用ASP.NET Core 1.0 创建类库和命令行程序。

选择 ASP.NET Core 1.0 Empty 项目。

解决方案目录结构

创建好解决方案后,在解决方案文件夹结构如下:

提示

只用在Windows平台的 Visual Studio 2015 才有解决方案的概念,对于跨平台的 Visual Studio Code 是没有解决方案的概念。
同时,仅通过 Visual Studio 2015 创建的才有解决方案,否则只有项目文件。

  • src
  • global.json
  • {your-solution-name}.sln

{your-solution-name}.sln 这个文件是用于Visual Studio 识别整个解决方案的,和其他类型的项目没有区别,就不做介绍了。

global.json

global.json 文件用于定义解决方案级别的设置,作用和 {your-solution-name}.sln 相同。
那为什么还要再定义一次呢? ASP.NET Core 1.0 的目标是在全平台运行,而在非Windows平台是没有强大的IDE的,只能靠一些文本编辑器解决,此时 {your-solution-name}.sln 文件便没有意义了。
global.json 默认的文件内容如下:(其中version的值取决你安装的版本)

1
2
3
4
5
6
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-rc1-update1",
}
}

projects 用于定义相关的项目所属的文件夹,也就是在哪些子文件夹下面去寻找项目,默认包含 src 文件夹。
sdk 用于表明使用的SDK版本,包含 version , architecture , runtime 三个子项。
在Windows下, runtime 可选 coreclrclr (默认),在Linux/Mac 下,可选 coreclrmono (默认)。
由于ASP.NET Core 1.0 开始,默认的runtime非常精简,几乎什么都不包含,因此需要以Nuget包的方式下载,下载地址默认在系统文件夹(具体在哪未知)。
我们可以通过 packages 强制指定下载的的文件都放在哪里。
下面是一个较完整的示例:

1
2
3
4
5
6
7
8
9
{
"projects": [ "src", "test" ],
"packages": "C:\\Program Files (x86)\\Microsoft Web Tools\\DNU",
"sdk": {
"version": "1.0.0-rc1-update1",
"architecture": "x64",
"runtime": "coreclr"
}
}

项目目录结构

讨论完解决方案级别的文件结构,让我们再看看项目级别。

注解

对于 Mac/Linux 可以直接从这里看起。

首先,进入到 src\{your-project-name} 文件夹。
文件目录如下:

  • PropertieslaunchSettings.json (仅 Windows 平台有)
  • wwwroot
  • wwwroot\web.config
  • project.json
  • project.lock.json (运行过 dnu restore 生成)
  • Dockerfile (Windows 平台没有)
  • {your-project-name}.xproj (仅 Windows 平台有)
  • Startup.cs

这里面,wwwroot就是运行时网站的根目录(可以在 project.json 内重置)。
Properties 文件夹下的 launchSettings.json 是可以通过 Visual Studio 的图形化界面修改的,就不详细说明了。
project.lock.json 是根据 project.json 文件生成的,重新生成可在项目目录下使用命令 dnu restore 完成,Visual Studio 2015 会在必要时自动运行此命令。
下面重点介绍 project.jsonStartup.cs 两个文件。

project.json

project.json 是项目文件,主要包括了对项目的配置(如应该对哪些文件进行编译,输出时保留哪些文件,项目的依赖)和生成dll的元数据(版本号,标题,作者,版权信息等)。

小技巧

如果需要向 Visual Studio 2015 导入其他平台创建的项目,可以选择 project.json 作为项目文件,随后 Visual Studio 2015 会生成 .xproj 的项目文件。

默认的文件如下(综合 Windows平台与Mac平台):

比较重要(开发中常用)的是 dependencies , commands , frameworks

dependencies 包含了项目的引用及其版本,因为是空项目,只引用了两个Web服务器,IIS和Kestrel。其中Kestrel是跨平台的Web服务器。

注解

dependencies 仅包含了服务器端的引用,如需设置浏览器端的JS/CSS引用,请参考 ASP.NET Core 1.0 中的依赖项管理

frameworks 包含了需要编译的框架,当在非Windows平台上运行时,请只保留 "dnxcore50":{}

commands 中包含的若干命令是通过 dnx 命令运行时的可用参数。如使用 dnx web 使用默认参数启动Kestrel服务器(监听 http://localhost:5000
也可以使用以下设置同时监听5000和5001两个端口。

小技巧

这种设置还可以保证所有到达5000和5001的请求全部都能被接受,而不要求url中为 localhost

"commands":{
"web":"Microsoft.AspNet.Server.Kestrel --server.urls http://*:5000;http://*:5001"
}

当然也可以通过另外的json文件定义这一行为,否则每次更改都需要运行 dnu restore 命令。

"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.json",
}

hosting.json 文件如下:

{
"server": "Microsoft.AspNet.Server.Kestrel",
"server.urls": "http://*:5000"
}

Startup.cs

请参考我另一篇博文 ASP.NET Core 1.0 入门——Application Startup

声明

ASP.NET Core 1.0 入门——了解一个空项目 由 勤奋的小孩 创作,采用 知识共享 署名-相同方式共享 4.0 国际 许可协议进行许可。
本许可协议授权之外的使用权限可以从 http://space.cnblogs.com/msg/send/qin-nz 处获得。

ASP.NET Core 1.0 入门——了解一个空项目的更多相关文章

  1. ASP.NET Core 1.0 入门——Application Startup

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  2. ASP.NET Core 3.0 入门

    原文:ASP.NET Core 3.0 入门 课程简介 与2.x相比发生的一些变化,项目结构.Blazor.SignalR.gRPC等 课程预计结构 ASP.NET Core 3.0项目架构简介 AS ...

  3. 推荐:【视频教程】ASP.NET Core 3.0 入门

    墙裂推荐了,免费,通俗易懂,唯一可惜的就是不是我录的,更可惜的是人家录制完了快半年了我还没看完... 版权归原作者所有,建议新手还是边看边实践吧,要不然过完一遍发现自己啥也没学会,不要眼高手低 [视频 ...

  4. 在 Mac OS 上创建并运行 ASP.NET Core 1.0 网站

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  5. ASP.NET Core 1.0 中的依赖项管理

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  6. 【原生态跨平台:ASP.NET Core 1.0(非Mono)在 Ubuntu 14.04 服务器上一对一的配置实现-篇幅1】

    鸡冻人心的2016,微软高产年. build 2016后 各种干货层出不穷. 1 Win10 集成了bash  ,实现了纳德拉的成诺,Microsoft Love Linux!!! 2 跨平台  ,收 ...

  7. ASP.NET Core 6 从入门到企业级实战开发应用技术汇总

    系列目录     [已更新最新开发文章,点击查看详细] 本系列博客主要介绍.NET6相关技术,从基础入门.进阶提升到高级升华,最后通过一个企业级项目实战来检验技术应用能力.把个人技术与经验分享出来,抛 ...

  8. 从头编写 asp.net core 2.0 web api 基础框架 (1)

    工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...

  9. 从头编写 asp.net core 2.0 web api 基础框架 (2)

    上一篇是: http://www.cnblogs.com/cgzl/p/7637250.html Github源码地址是: https://github.com/solenovex/Building- ...

随机推荐

  1. Generics and Collection (2)

    Integer is a subtype of NumberDouble is a subtype of NumberArrayList<E> is a subtype of List&l ...

  2. iOS调试

    iOS高效调试 写代码难免出现bug.储备些调试技能绝对能够提高你的工作效率,让bug无所遁形.下面就和大家分享一些我在工作中常用的iOS调试小技能. 1. 打印 最简单,基础的调试方法就是打印日志了 ...

  3. Unity Application 前后台切换调用关系

    [Unity Application 前后台切换调用关系] http://blog.csdn.net/aa4790139/article/details/48087877

  4. oracle 正则表达式

    1.获取不包含 欧洲|*北美|*中国|*欧拉非 字符串的行. SELECT/* count(*)*/*   FROM table t  WHERE NOT regexp_like(t.xxxx, '( ...

  5. mysql 常用查询

    1.unix时间戳的使用 unix_timesamp.from_unixtime 函数 和 datatime_format函数. // 从datetime 类型取做整形 unixtime时间戳; se ...

  6. sql查询当天,一周,一个月数据的语句

    --查询当天:  select * from info where DateDiff(dd,datetime,getdate())=0 --查询24小时内的: select * from info w ...

  7. Git项目存放位置在导入Eclipse前不能存放在Eclipse Workspace

    这篇帖子的背景: 本人想将一个git项目导入至Eclipse的Workspace中,并且该项目的所有git信息.但是,该git项目在导入之前,就已经存放在Eclipse的Workspace中.在将该g ...

  8. 特殊字符(包含emoji)的梳理

    背景知识 emoji表情符号,是20世纪90年代由NTT Docomo栗田穣崇(Shigetaka Kurit)创建的,词义来自日语(えもじ,e-moji,moji在日语中的含义是字符).emoji可 ...

  9. keepalived衡环境搭建

    环境信息 keepalived master 192.168.1.106 keepalived backup 192.168.1.103 vip 192.168.1.100 1,安装keepalive ...

  10. ASP.NET ZERO 学习 HangFire的使用二

    之前在ABP配置好了HangFire环境之后,那么如何才能添加Job到HangFire中让其执行呢 这就需要参考ABP的Background Jobs and Workers, 参考路径:http:/ ...