认识ASP.NET 5项目结构和项目文件xproj

ASP.NET 5 在项目结构上做了很大的改变,我们以前熟悉的目录结构与项目文件内容都不太一样了,本篇文章带大家了解 ASP.NET 5 到底跟以前有哪些不一样的地方。

我们先用 Visual Studio 2015 建立一个全新的 ASP.NET 5 网站项目,打开VS2015,创建Web项目,.net framework 选择.net 4.5 以上,选择ASP.NET Web Application,在弹出的窗口里选择ASP.NET 5 Website模板创建项目,图示如下:

创建好项目后,并参考下图打开项目的所在文件夹,解决方案目录结构:

实际文件夹的目录结构,我们看到有几个文件夹,下面我们进行逐一介绍

  • .vs 隐藏文件夹:用来保存原本我们在VS2003-2013项目目录中会看到的 *.suo(Solution User Options) 文件,这个文件主要用来保存 Visual Studio 2015 操作过程的一些状态,例如你已经开启的档案列表等临时的信息。如果 ASP.NET 5 网站使用 IISExpress 进行排错,IISExpress 所需要的 applicationhost.config 配置文件也会放在 .vs\config\ 目录下。 这些临时的文件不应该放入到源代码版本控制,这个算是一个改进。
  • artifacts 文件夹:用来保存网站构建过程中需要临时保存的元文件案与输出文件,也就是以前在项目中常看到的 bin 与 obj 目录,现在都统一搬到这个文件夹下。这个文件夹不应该加入版本控制,这又是一大改进。
  • src 文件夹:用来放置该方案里的所有项目,所以主要的源代码都会放在这个目录下,该目录下每个目录就是一个独立的项目。
  • *.sln 项目文件:这个文件就不用介绍了,跟之前我们常看到的项目解决方案是完全一样的。
  • global.json 全局配置文件:这个文件通常都跟项目解决方案放在同一层文件夹下,用来给解决方案参考用的。主要用来定义要「自动导入」到解决方案文件中的路径列表与 sdk 的默认版本。如下图的 "projects" 参数就有列出设定的会导入入 src 与 test 文件夹下所有的项目。举例来说,如果你想将另一个解决方案目录下的某一个 ASP.NET 5 项目迁移到目前项目下,只要将该项目目录 ( src\projectName ) 直接移动到目前方案的 src\ 目录下即可,其他甚么都不用设置!

接着我们进入 ASPNET5WebApp 项目文件夹 (如下图),项目的目录结构也跟之前差别很大哦,我一样由上至下分别介绍一遍:

  • bower_components文件夹:由于 Visual Studio 2015 与 Web 前端最常用的 bower 工具整合在一起,未来所有的「前端」套件通过 bower 命令进行安装时,都会自动将套件安装到bower_components文件夹之中。这个文件夹不应该加入版本控制。
  • Compiler文件夹:ASP.NET MVC 6 ( 等同于 ASP.NET 5 ) 开始,将支持 Razor 预先编译功能,可以让你在部署网站时预先编译所有 Razor页面,以提升网站执行的速度。在这个文件夹中有个Compiler\Preprocess\RazorPreCompilation.cs文件,可以让你设置是否要启用 Razor 自动编译功能。(只要取消注释掉的程序代码就可以启用 Razor 预先编译机制)

  • Controllers文件夹:这个是 ASP.NET MVC 6 的 Controllers 专用文件夹。
  • Migrations文件夹:这个是 Entity Framework 的 DbMigration 专用文件夹。
  • Models文件夹:这个是 ASP.NET MVC 6 的 Models 专用文件夹。
  • node_modules文件夹:由于 Visual Studio 2015 将 nodejs 常用的 npm 套件管理工具整合在一起,未来所有的 npm 组件都可以通过 npm 命令进行安装,且这些组件默认的设置都会安装到node_modules文件夹之中。注意这个文件夹不应该加入版本控制。
  • Properties文件夹:这个文件夹跟之前差不多,也是用来保存一些项目的特别设置,例如网站发行配置文件等。但除此之外,还多了一个 AppSettings.cs 类别文件,这个文件主要目的是用来定义一个 AppSettings (应用程序设定) 的模型类 (Model Class),让你用强型别的方式读取应用程序配置参数。
  • Views文件夹:这个是 ASP.NET MVC 6 的 Views 专用文件夹。
  • wwwroot文件夹:这个文件夹就是全新的东西了,未来的 ASP.NET 5 只要是「静态文件」,例如 js, css, images, … 诸如此类的静态文件,都会统一放到这个文件夹里面,避免前端文件与后端程序代码混在一起的情况。ASP.NET5是彻底模块化了,IIS不再是运行MVC程序的唯一容器,任何兼容DNX的运行容器都可以运行MVC程序,程序发布包被分为approot和wwwroot两个部分,分别存放应用程序集(或源码)和静态文件,从而做到更好的分离。
  • *.xproj文件:这是新一代的项目文件,有别于以前的*.csproj与*.vbproj项目档,这个项目文件小多了,内容格式差不多,一样是 XML 的格式,一样是 MSBuild 会去参考的内容,但最大的不同之处在于,新版*.xproj不用再明确列出所有的文件清单,所有项目中的文件不再需要特别加入或移除,只要档案出现在项目目录中,文件就会自动被加入项目里!进一步强化约定胜于配置原则,项目中用不到的文件乖乖删除吧,这样就可以把项目中很多不该存在的垃圾文件清理了,相信大家对这点很有感触吧。
  • *.xproj.user文件:这个文件用来记录项目在 Visual Studio 2015 开发工具里的一些状态,例如你已经开启的文件列表等暂存信息。这个文件不应该加入版本控制。
  • bower.json文件:这是 bower 工具专用的配置文件,与 ASP.NET 5 没有直接关系,相关文件请参考这里:http://bower.io/docs/config/
  • config.json文件:这是 ASP.NET 5 的项目配置文件,所有应用程序参数设置与连接字符串都会定义在此。
  • gulpfile.json文件:这是 gulp 前端流程管理工具专用的配置文件,可以帮助你完成一些自动化的工作。这文件与 ASP.NET 5 没有直接关系,相关文件请参考这里:https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md
  • MessageServices.cs文件:这个文件是当你在 ASP.NET Identity 启用二阶段验证 (two-factor authentication) 时,让你写发送 Email 或 SMS 短信程序代码的地方。
  • package.json 文件:这是 nodejs 的 npm 工具专用的配置文件,与 ASP.NET 5 没有直接关系,相关文件请参考这里:https://docs.npmjs.com/
  • project.json文件:这个文件是重要的 ASP.NET 5 项目配置文件,许多重要的设定都从 web.config 改到这个档案来了,如果要写好 ASP.NET 5 势必得深入了解 project.json 文件的配置方式,详细文件请参考:https://github.com/aspnet/Home/wiki/Project.json-file
  • project.lock.json文件:由于在 project.json 文件里面会定义项目需要加载的 NuGet 套件,而且 Visual Studio 2015 也会自动加载套件的依赖套件,因此每次项目在新的环境构建时,很有可能会花上 3 ~ 5 倍的时间进行恢复套件 (Package Restore),这个 project.lock.json 文件比较像是以前的 packages.config 文件,明确列出所有需要加载的 NuGet 套件有哪些。这个文件是由 Visual Studio 2015 自动生成的,但建议加入版本控制,以缩短 CI 构建的时间。
  • Project_Readme.html文件:项目说明档,该网页有许多参考链接,可以让你深入了解 ASP.NET 5 的开发方式。
  • Startup.cs文件:这个文件是重要的 ASP.NET 5 网站启动入口,由于 ASP.NET 5 执行生命周期的改变,以前的 global.asax 文件已经成为过往云烟不复存在了,取而代之的就是 Startup.cs 文件里的 Startup 类。换句话说,未来ASP.NET 5 应用程序启动时,第一时间就是从 Startup 类开始执行的!

本文概要的介绍 ASP.NET 5 全新的项目目录结构与 xproj 项目文件,以及一些非常重要的文件,都是需要特别额外学习的部分,博客园的"汤姆大叔"通过阅读微软的源码以及网络上的一些文章给大家整理了一个系列入门教程。且其中的代码都在VS 2015 RC中进行过验证。作者也为这些文章建立了一个目录 http://www.cnblogs.com/TomXu/p/4496545.html ,这个系列文章我也在微信公众号opendotnet 上转载过,欢迎关注微信公众号opendotnet,通过历史信息阅读:

  1. ASP.NET 5简介

  2. 初识项目

  3. 项目发布与部署

  4. 核心技术与环境配置

  5. Configuration配置信息管理

  6. Middleware详解

  7. 依赖注入

  8. Session与Caching

  9. 日志框架

  10. Controller与Action

  11. Routing路由

  12. 基于Lamda表达式的强类型Routing实现

  13. TagHelper

  14. View Component

  15. MvcOptions配置

  16. 自定义View视图文件查找逻辑

  17. MVC中的其他新特性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438182.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

REVERSE-PRACTICE-BUUCTF-4

REVERSE-PRACTICE-BUUCTF-4刮开有奖[BJDCTF 2nd]8086[GKCTF2020]Check_1n[GXYCTF2019]luck_guy刮开有奖 exe文件,运行后无任何提示,无壳,用ida分析 WinMain->DialogBoxParamA->DialogFunc DialogBoxParamA函数: DialogFun…

REVERSE-PRACTICE-BUUCTF-5

REVERSE-PRACTICE-BUUCTF-5findit简单注册器[GWCTF 2019]pyre[BJDCTF2020]JustREfindit apk文件,直接上jadx-gui分析 验证输入的逻辑比较简单,写脚本即可 安装这个apk,将字符串输入即可得到flag,当然也可以直接写输出flag的脚本…

REVERSE-PRACTICE-BUUCTF-6

REVERSE-PRACTICE-BUUCTF-6rsaCrackRTF[2019红帽杯]easyRE[ACTF新生赛2020]easyrersa 解压出来是.enc和.key两个文件,.enc是密文,.key存放着公钥信息 使用在线网站或者openssl解析.key文件中存放着的公钥信息 可获知rsa需要的模数n和公钥e 使用在线网站…

vs项目结构解析

当我们用VS开发一个项目的时候,首先应该清楚用VS这个IDE生成的一些文件和文件夹是什么意思,起什么作用,什么场合下使用。 因为我使用的是VS2015,就以这个为例来进行一些说明: 首先要做的是更改你的操作系统&#xff…

REVERSE-PRACTICE-BUUCTF-7

REVERSE-PRACTICE-BUUCTF-7Youngter-drive[ACTF新生赛2020]rome[FlareOn4]login[SUCTF2019]SignInYoungter-drive exe程序,运行后提示输入flag,有upx壳,脱壳后ida分析 main函数中获取输入并拷贝,开启了两个线程分别运行StartAddr…

REVERSE-PRACTICE-BUUCTF-8

REVERSE-PRACTICE-BUUCTF-8[GUET-CTF2019]re相册[V&N2020 公开赛]strangeCpp[BJDCTF2020]easy[GUET-CTF2019]re elf文件,有upx壳,脱壳后ida分析 字符串交叉引用来到主逻辑函数sub_400E28 逻辑清晰,获取输入,验证输入&#xf…

NuGet的使用、部署、搭建私有服务

目录 前言 什么是NuGet?为什么要使用NuGetNuGet的优点使用 Get-Help NuGetInstall-PackageGet-PackageUninstall-Package制作NuGet库包搭建NuGet服务器上传NetGet库包新增NuGet源总结前言 什么是NuGet? Nuget是一个.NET平台下的开源的项目,它是Visual Studio的…

REVERSE-PRACTICE-BUUCTF-9

REVERSE-PRACTICE-BUUCTF-9[ACTF新生赛2020]usualCrypt[MRCTF2020]Transform[V&N2020 公开赛]CSRe[WUSTCTF2020]level1[ACTF新生赛2020]usualCrypt exe程序,运行后提示输入flag,无壳,ida分析 main函数逻辑清晰,获取输入&…

ASP.NET MVC Beta 新特性之 IValueProvider

在刚发布的ASP.NET MVC Beta版中,在UpdataModel方法中提供了一个带有IValueProvider参数的重载。那么这个IValueProvider有什么用呢? 我们先来看一个简单的场景,例如我们的blog系统有一个Post的对象,Post对象有一个Tags属性和Cat…

REVERSE-PRACTICE-BUUCTF-10

REVERSE-PRACTICE-BUUCTF-10[GWCTF 2019]xxor[HDCTF2019]Maze[WUSTCTF2020]level2[BJDCTF2020]BJD hamburger competition[GWCTF 2019]xxor elf文件,无壳,用ida分析 main函数的逻辑清晰,首先获取输入,为6个int64的值,…

Axure教程 axure新手入门基础(1)

axure新手入门基础(1) 名词解释: 线框图:一般就是指产品原型,比如:把线框图尽快画出来和把原型尽快做出来是一个意思。 axure元件:也叫axure组件或axure部件,系统自带了一部分最基础常用的,网上…

REVERSE-PRACTICE-BUUCTF-11

REVERSE-PRACTICE-BUUCTF-11[FlareOn4]IgniteMe[MRCTF2020]Xor[GKCTF2020]BabyDriver[MRCTF2020]hello_world_go[FlareOn4]IgniteMe exe程序,运行后提示输入flag,无壳,ida分析 主逻辑在start函数中,读取输入后check,验…

Axure教程 axure新手入门基础(2) 简单易上手

https://www.duote.com/tech/35/102713.html (二)Axure rp的线框图元件 l 图片 图片元件拖入编辑区后,可以通过双击选择本地磁盘中的图片,将图片载入到编辑区,axure会自动提示将大图片进行优化,以避免原型文件过大;选择图片时可以…

REVERSE-PRACTICE-BUUCTF-12

REVERSE-PRACTICE-BUUCTF-12[WUSTCTF2020]level3crackMe[FlareOn6]Overlong[WUSTCTF2020]Cr0ssfun[WUSTCTF2020]level3 elf文件,无壳,ida分析 main函数中,获取输入,对输入做base64编码,提示有错误,在程序中…

Axure RP使用基础教程

一、Axure界面介绍 1、页面导航面板(Pages) Axure的页面管理采用类似操作系统的文件夹和页面文件的管理方式,不同点是,页面文件可以存在子页面,这一点是考虑了页面与页面跳转或者嵌套页面等网页特点。 页面文件管理导…

REVERSE-PRACTICE-BUUCTF-13

REVERSE-PRACTICE-BUUCTF-13firmware[ACTF新生赛2020]Oruga[Zer0pts2020]easy strcmp[GXYCTF2019]simple CPPfirmware .bin(二进制)文件,由题目提示知是路由器固件逆向 参考:逆向路由器固件之解包 Part1 linux安装好binwalk和fir…

REVERSE-PRACTICE-BUUCTF-14

REVERSE-PRACTICE-BUUCTF-14[FlareOn3]Challenge1[GUET-CTF2019]number_game[GWCTF 2019]re3[网鼎杯 2020 青龙组]singal[FlareOn3]Challenge1 exe程序,运行后提示输入密码,输入错误退出程序,无壳,ida分析 main函数逻辑清晰&…

REVERSE-PRACTICE-BUUCTF-15

REVERSE-PRACTICE-BUUCTF-15[2019红帽杯]xx[ACTF新生赛2020]Universe_final_answer[WUSTCTF2020]level4findKey[2019红帽杯]xx exe程序,运行后直接输入,无壳,ida分析 交叉引用字符串“You win!”来到sub_1400011A0函数 主要的逻辑…

【三层架构】——COM/DCOM初识

背景: 在学习三层架构的时候,知道三层分为UI层(表现层)、BLL层(业务逻辑层)、DAL层(数据访问层),相对于传统的二层架构(客户端和数据库)来说&…

REVERSE-PRACTICE-BUUCTF-16

REVERSE-PRACTICE-BUUCTF-16[UTCTF2020]basic-reequation[安洵杯 2019]crackMe[FlareOn5]Minesweeper Championship Registration[UTCTF2020]basic-re elf文件,无壳,用ida分析 main函数就是简单的加减乘除运算 shiftF12,在字符串窗口看到fla…