澳门威利斯人_威利斯人娱乐「手机版」

来自 网络资讯 2019-06-01 08:00 的文章
当前位置: 澳门威利斯人 > 网络资讯 > 正文

高级编程,这葫芦里卖的什么药

威尼斯娱乐场 1

本章节译文分为上下篇,下篇见:C# 陆 与 .NET Core 1.0 高档编程 - 40 ASP.NET Core(下)

威尼斯娱乐场, 

假定你现在通过行使安装开关安装这么些包,那么这一个包也将被积存在project.json文件中。框架部分是 project.json 的另二位命关天片段,本节教程将报告你 ASP.NET 应用程序能够使用什么.NET 框架。

附英文版原来的书文:Professional C# 6 and .NET Core 1.0 - 40 ASP.NET Core

 

{
 "dependencies": {
  "Microsoft.NETCore.App": {
   "version": "1.0.0",
   "type": "platform"
  },
  "Microsoft.AspNetCore.Diagnostics": "1.0.0",
  "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
  "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
  "Microsoft.Extensions.Logging.Console": "1.0.0"
 },
 "tools": {
  "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
 },
 "frameworks": {
  "netcoreapp1.0": {
   "imports": ["dotnet5.6", "portable-net45 win8"]
  }
 },
 "buildOptions": {
  "emitEntryPoint": true,
  "preserveCompilationContext": true
 },
 "runtimeOptions": {
  "configProperties": {
   "System.GC.Server": true
  }
 },
 "publishOptions": {
  "include": ["wwwroot", "web.config" ]
 },
 "scripts": {
  "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath%
   --framework %publish:FullTargetFramework%" ]
 }
}

本章的wrox.com代码下载位于

.NET Core种类 : 壹、.NET Core 情况搭建和命令行CLI入门 介绍了.NET Core景况,本文介绍.NET Core中最关键的二个安顿文件project.json的连锁内容。大家得以使用.NET Core 的dotnet 命令行接口(CLI)dotnet new命令创设3个施用,也得以用Visual Studio 20壹5 update 三创造贰个运用,他们都有七个project.json ,它是种类的陈设文件,类似事先的*.csrpoj文件。Project.json 是2个新的类别文件,它的功力大多数与 *.*PROJ 文件重叠。它可标志项目引用、版本选拔(如版本号)等事项,并可标记要编写翻译的阳台,举例,是 .NET Core 依然 .NET Framework。心细的您或许早就开掘了他们所开创出来的project.json 文件的开始和结果有非常的多都不雷同。大家下边就来看下那些文件的内容,project.json 的合法文书档案 https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json 。

此时此刻,新建的花色中暗许完成的project.json文件代码如下:

ASP.NET Web项目

第贰创制3个名叫Web萨姆pleApp的空ASP.NET Core 1.0 Web应用程序(参见图40.1)。本章从二个航空模型板初步加多效果。

 威尼斯娱乐场 2

图40.1

注意通过本章的示范代码下载,供给撤除注释运行类中的特定代码块来激活所探究的成效。也得以从头先河创设项目。未有太多的代码能够看看有着的职能。

创造项目后,将见到三个名叫WebSampleApp的化解方案和项目文件,在那之中带有部分文本和文书夹(参见图40.二)。

 威尼斯娱乐场 3

图40.2该化解方案包括global.json配置文件,该文件列出解决方案的目录。能够在偏下代码段中从“projects”键的值查看此内容。 src目录包蕴具有源代码的缓和方案的全部品类。“test”目录用于定义单元测试,固然它们还不存在。 sdk设置定义所选用的SDK的版本号(代码文件global.json)。

{
  "projects": ["src","test" ],
  "sdk": {
    "version":"1.0.0-0"
  }
}

在类型布局中,使用浏览器张开文件Project_Readme.html时,能够看到关于ASP.NET Core 一.0的1对完好信息。在等级次序文件夹中得以看看2个“References”文件夹。它涵盖全数引用的NuGet包。对于叁个空的ASP.NET Web应用程序项目,引用的软件包仅有Microsoft.AspNetCore.IISPlatformHandler和Microsoft.AspNetCore.Server.Kestrel。

IISPlatformHandler包蕴IIS的模块,用于将IIS基础结构映射到ASP.NET Core 1.0。 Kestrel是ASP.NET Core 壹.0的一个新的Web服务器,在Linux平台上也得以应用它。

还足以在project.json文件中找到NuGet包的引用。 (在偏下代码片段中,它们在“dependencies”部分。)框架部分列出了辅助的.NET框架,如net45贰(.NET 4.伍.二)和netstandard1.0(.NET Core 1.0)。能够去除无需托管的可怜。 “exclude”部分列出了不应用于编译应用程序的文书和目录。“publishExclude”部分列出不应发表的文本和文书夹(代码文件WebSampleApp/project.json):

{
  "version":"1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },
  "dependencies": {
    "NETStandard.Library":"1.0.0-*",
    "Microsoft.AspNetCore.IISPlatformHandler":"1.0.0-*",
    "Microsoft.AspNetCore.Server.Kestrel":"1.0.0-*"
  },
  "frameworks": {
    "net452": { },
    "netstandard1.0": {
      "dependencies": {
        "NETStandard.Library":"1.0.0-*"
       }
     }
  },
  "content": ["hosting.json" ]
  "exclude": [
    "wwwroot",
    "node_modules"
  ],
  "publishExclude": [
    "**.user",
    "**.vspscc"
  ]
}

“项目安装”中的“调节和测试”选项能够安排利用Visual Studio开辟时使用的Web服务器(请参见图40.三)。默许情形下,IIS Express使用“调节和测试”设置钦赐的端口号实行布局。 IIS Express由Internet新闻服务器(IIS)派生,并提供IIS的具有骨干作用。那样在大约一样的碰着中支付Web应用程序变得轻易,在该条件中应用程序将被稍后托管(如若IIS用于托管)。

 威尼斯娱乐场 4

图40.3

要动用 Kestrel 服务器运维应用程序,能够选择“调节和测试项目”设置选取Web配置文件。Profile选项中的可用选项列表是project.json中列出的指令。

使用Visual Studio项目设置更换的设置会潜移默化launchSettings.json文件的布置。此文件还是能定义一些别样布置,如命令行参数(代码文件WebSampleApp/Properties/launchsettings.json):

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl":"http://localhost:19879/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName":"IISExpress",
      "launchBrowser": true,
      "environmentVariables": { 
        "Hosting:Environment":"Development"
      }
    },
    "web": {
      "commandName":"web",
      "launchBrowser": true,
      "launchUrl":"http://localhost:5000/",
      "commandLineArgs":"Environment=Development",
      "environmentVariables": {
        "Hosting:Environment":"Development"
      }
    }
  }
}

缓慢解决方案财富管理器中项目结构中的“Dependencies”文件夹显示JavaScript库的正视项。 创造空项目时,该公文夹为空。 本章后边的“增多静态内容”部分加多正视项。

“wwwroot”文件夹是亟需表露到服务器的静态文件的文件夹。 如今这一个文件夹是空的,但经过这一章,能够增加HTML和CSS文件和JavaScript库。

一个C#源文件

  • Startup.cs - 也包蕴在一个空项目中。 接下来商讨这么些文件。在创设项目里面,须求那些正视项和命名空间:

依赖项

Microsoft.AspNetCore.Http.Abstractions
Microsoft.AspNetCore.IISPlatformHandler
Microsoft.AspNetCore.Server.Kestrel
Microsoft.AspNetCore.StaticFiles
Microsoft.AspNetCore.Session
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.UserSecrets
Microsoft.Extensions.Logging
Microsoft.Extensions.Logging.Console
Microsoft.Extensions.Logging.Debug
Microsoft.Extensions.PlatformAbstractions
Newtonsoft.Json
System.Globalization
System.Text.Encodings.Web
System.Runtime

命名空间

Microsoft.AspNetCore.Builder;
Microsoft.AspNetCore.Hosting;
Microsoft.AspNetCore.Http;
Microsoft.Extensions.Configuration
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Logging
Microsoft.Extensions.PlatformAbstractions
Newtonsoft.Json
System
System.Globalization
System.Linq
System.Text
System.Text.Encodings.Web
System.Threading.Tasks

 

"frameworks": { 
 "netcoreapp1.0": { 
  "imports": [ 
   "dotnet5.6", 
   "portable-net45 win8" 
  ] 
 } 
},

使用gulp编译

居尔p是JavaScript的编写翻译系统。npm类似于NuGet,而 gulp 类似于.NET开拓实用程序(DNU)。既然 JavaScript代码被深入分析,为啥还亟需三个行使JavaScript的编译系统?在将HTML,CSS和JavaScript那个文件放到服务器上事先,有成都百货上千办事要做。编写翻译系统能够将Syntactically Awesome Stylesheets(SASS)文件(具有脚本功能的CSS)调换为CSS,同期能够收缩和压缩文件,还足以运维脚本的单元测试,并且能够解析JavaScript代码(比如, JSHint) - 有广大管用的任务可以做。

用npm加多gulp之后,能够采用Visual Studio项目模板增添"居尔p Configuration File"。此模板创立以下gulp文件(代码文件MVC萨姆pleApp/gulpfile.js):

/*
This file is the main entry point for defining Gulp tasks and using Gulp plugins.
Click here to learn more. http://go.microsoft.com/fwlink/?LinkId=518007
*/
var gulp = require('gulp');
gulp.task('default', function () {
    // place code for your default task here
});

包蕴gulp标记的编辑器如图40.7所示。

 威尼斯娱乐场 5

图40.7

以往在gulp文件中增加一些职责。 第2行定义此文件的所需库,并将变量分配给脚本。 这里一度增加了npm的库被会利用。 gulp.task函数创设gulp任务,能够运用Visual Studio职责运营器浏览器运行:

"use strict";
var gulp = require("gulp"),
    rimraf = require("rimraf"),
    concat = require("gulp-concat"),
    cssmin = require("gulp-cssmin"),
    uglify = require("gulp-uglify")
var paths = {
    webroot:"./wwwroot/"
};
paths.js = paths.webroot  "js/**/*.js";
paths.minJs = paths.webroot  "js/**/*.min.js";
paths.css = paths.webroot  "css/**/*.css";
paths.minCss = paths.webroot  "css/**/*.min.css";
paths.concatJsDest = paths.webroot  "js/site.min.js";
paths.concatCssDest = paths.webroot  "css/site.min.css";
gulp.task("clean:js", function (cb) {
    rimraf(paths.concatJsDest, cb);
});
gulp.task("clean:css", function (cb) {
    rimraf(paths.concatCssDest, cb);
});
gulp.task("clean", ["clean:js","clean:css"]);
gulp.task("min:js", function () {
    gulp.src([paths.js,"!"   paths.minJs], { base:"." }) 
        .pipe(concat(paths.concatJsDest))
        .pipe(uglify())
        .pipe(gulp.dest("."));
});
gulp.task("min:css", function () {
    gulp.src([paths.css,"!"   paths.minCss])
        .pipe(concat(paths.concatCssDest))
        .pipe(cssmin())
        .pipe(gulp.dest("."));
});
gulp.task("min", ["min:js","min:css"]);

Visual Studio 20壹伍为gulp文件提供了1个职分运营器浏览器(见图40.八)。双击任务以运转它。仍是能够将gulp职分映射到Visual Studio命令。这样,当展开项目时,在编写翻译以前或之后,或许当在“编写翻译”菜单中选用了“清理”菜单项时,gulp职责将活动运维。

 威尼斯娱乐场 6

图40.8

注意 Visual Studio接济的另1个JavaScript编写翻译系统是Grunt。 Grunt的关键是通过陈设来编写翻译,而居尔p的主要性是经过JavaScript代码编译。

netcoreapp1.0

咱俩再来仔细看下  netcoreapp1.0:

"frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  }

框架netcoreapp1.0 是个多目标框架对象名字(TFM)值,除了有经典的net45,net46,现在又有了一些新的像netcoreapp1.0,文章 

Running .NET Core apps on multiple frameworks and What the Target Framework Monikers (TFMs) are about 有更详尽的验证。

正如大家看看的,在最上部大家有其一文件的版本消息。那是你编写翻译你的应用程序时精选版本时采用的

Web技术

在本章前边介绍ASP.NET的底子从前,本节将介绍在制造Web应用程序时那一个关键的中央Web手艺:HTML,CSS,JavaScript和jQuery。

Version

version 那么些脾气是您所要创设的零件的微小的元数据,其他元数据包涵name,title,description ,copyright 等, name 选项私下认可意况下选用的是父文件夹名称,你能够通过name 那性格子给它取个你想要的名字。

 

此版本的 ASP.NET Core,正视关系皆以经过NuGet包管理器管理。

脚本库

除去JavaScript编制程序语言,还亟需脚本库,来使生活更自在(译者注:那句话有一些玩儿的象征)。

  • jQuery(http://www.jquery.org)是二个库,它在拜访DOM成分并对事件做出反应时抽象出浏览器的歧异。
  • Angular(http://angularjs.org)是一个依照MVC格局的库,用于简化单页Web应用程序的开荒和测试。 (与ASP.NET MVC分裂,Angular提供了客户端代码的MVC形式。)

ASP.NET Web项目模板包涵jQuery库和Bootstrap。 Visual Studio 20壹伍协助速龙liSense和调节和测试JavaScript代码。

注意 本书中从不介绍为Web应用程序设计样式和编排JavaScript代码。能够在 《HTML和CSS》中读书更加多关于HTML和体裁:JohnDucket设计和构建网址(Wiley,201壹),并通过尼古Russ C. 扎卡s(Wrox,二〇一二)为Web开拓人员加速专门的职业JavaScript技能进级换代。

project.json

率先,从大家 通过 Visual Studio 创制的种类 xproj  的 project.json︰

 

{
  "version": "1.0.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.NETCore.App": {
      "type": "platform",
      "version": "1.0.0"
    }
  },

  "frameworks": {
    "netcoreapp1.0": {
      "imports": "dnxcore50"
    }
  }
}

 

dotnet new 命令成立项目标 project.json:

 

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {},
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        }
      },
      "imports": "dnxcore50"
    }
  }
}

他们组织上看是一般的,不过具体内容上有比很大的不等的地点,他们都有五个甲级的属性:version, buildOptions, dependencies 和 framework。.NET Core 项目协会中最器重的文件可能是 project.json。此文件目的在于:

轮换 NuGet 文件管理器 package.config 文件,它可标记项目标 NuGet 引用。
点名项目协理的框架,以及关于怎样为一定框架营造项指标安插详细消息。
标记独立运用的目的平台,它含有其全数重视项,包涵对应平台所需的特定于阳台的 .NET Core 运维时。只怕,假设项目是可移植应用,project.json 可标志项目会在对象Computer(将在其上运营程序集)上设置的框架。
这多少个职分分布在 project.json 中的五个重半数以上(依据项目体系,我将Frameworks 和 dependencies合并为职能重合):

NuGet已经在.NET中留存几年了,未来管理你富有的依附关系的关键格局是由此接纳NuGet程序包管理器来保管。

 ---------------------------

Frameworks 和 dependencies

dependencies此部分列出了您的品类所依赖的次第 NuGet 包,包括所述依赖项的版本号。能够利用通配符钦定版本号,从而你能够允许 NuGet 包管理器还原自动下载与通配符相匹配的“最新版本”。版本号的空引号对代表“使用最新可用项”。大家创造的花色得以针对一个要么多少个Framework(比方大家目的在于创造的能够而且在.NET Framework和.NET Core上运营),援救的Framework定义在frameworks节点下。即使增加了七个Framework,并不是说最终身成的利用能够同期在那一个Framework中运作,而是说源文件在编写翻译的时候会针对那一个Framework生成对应的先后集。对于守旧的.NET项目以来,要是大家需求调用有些API,须要丰富所在程序集的引用。对于.NET Core来讲,全数应用到的程序集都被打包成二个NuGet包,所以本着程序集的一向重视转换成针对有个别NuGet包的信赖。针对NuGet的正视主要有 三种档期的顺序,一种是针对性富有Framework的,它们会直接定义在dependencies节点下,另一种则是针对有个别具体Framework的, 定义为当前Framework节点下的dependencies子节点。对于单身行使,运维时有个别钦赐将支撑的 OS,因而可钦命要绑定到应用程序的运行时库。

从下面三个project.json 文件能够见到Frameworks 和 dependencies 存在依赖关系。他们是足以嵌套的,在最高一流的依赖项,将是负有的Frameworks所信赖的,也足以本着三个实际的Framework 创设它的信赖关系,差异的Framework使用不一致版本的借助项。看上边的例证,大家看出Visual Studio和dotnet CLI版本定义的是大同小异的结果,只是两种差别的表明形式。

 

本文由澳门威利斯人发布于网络资讯,转载请注明出处:高级编程,这葫芦里卖的什么药

关键词: 澳门威利斯人