.Net Core 之 MSBuild 介绍

前言

关于 .NET Core 旧版本的 sdk 介绍可以参看我以前的 这篇 文章。

8 个小时前,.NET Core 项目组释放了 .NET Core 新一轮的 sdk 工具更新,即 RC4 版本 ,这个版本也就是意味着基本功能已经确定了,下个版本应该就是RTM版了,会随着 Visual Studio 2017 正式版释放出来。

众所周知,从Tools RC3 版本开始,微软已经抛弃了原来的 project.json 改为了 MSBuild 工具进行项目文件格式,这么做有好有坏,我想很大原因是为了兼容以前的项目吧。

不管喜不喜欢以前的 MSBuild 这个风格,都已经是事实了,所以还是先提前了解一下最新的SDK 内容比较实际点吧。

从 project.json 迁移到 MSBuild

很简单,只需要下载最近版本的 Visual Studio 2017 RC版,然后会帮你自动迁移。

MSBuild(Microsoft Build Engine),它代表微软Visual Studio 的项目构建工具,这是一种基于 XML 的文件格式。

RC4 SDK 的一些改进和更改

比起以前的 sdk dotnet 命令,新的 sdk 最大的改进就是关于脚手架的一些工作,首先就是 dotnet new 命令。

dotnet new

在使用 dotnet new 命令后,不会默认创建一个控制台 Hello World 程序,而是会显示以下。

根据提示可以看到,需要制定相应的模板类型名称,这个改进我认为是非常不错了,也就是当使用非 Visual Studio 开发工具时,我们可以和容易的创建一个模板程序,而不用从头开始。 这和使用 Yeoman 非常像,并且方便。

还有一个特点是,模板并不是一成不变的,它具有更新功能,并且具有可扩展性,任何人都可以编写自己的模板使用 dotnet new 命令,当前目前的 dotnet new 还不具备上述的一些功能,微软会在后面的几个月完善它。

在使用 dotnet new创建一个程序的时候,除了指定模板类型外,还可以指定需要使用的框架。

dotnet new console -f 框架名

或者可以使用 dotnet new console --help 来查看本机都安装了哪些框架。

project.json vs MSBuild

下面是两个分别使用 以前的 project.json 方式和新的 msbuild 方式创建的两个MVC项目,然后来看看他们项目文件之间的区别。

project.json

{"userSecretsId": "aspnet-WebApplication-0799fe3e-6eaf-4c5f-b40e-7c6bfd5dfa9a","dependencies": {"Microsoft.NETCore.App": {"version": "1.1.0-preview1-001153-00","type": "platform"},"Microsoft.AspNetCore.Authentication.Cookies": "1.0.0","Microsoft.AspNetCore.Diagnostics": "1.0.0","Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0","Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0","Microsoft.AspNetCore.Mvc": "1.0.1","Microsoft.AspNetCore.Razor.Tools": {"version": "1.0.0-preview2-final","type": "build"},"Microsoft.AspNetCore.Routing": "1.0.1","Microsoft.AspNetCore.Server.IISIntegration": "1.0.0","Microsoft.AspNetCore.Server.Kestrel": "1.0.1","Microsoft.AspNetCore.StaticFiles": "1.0.0","Microsoft.EntityFrameworkCore.Sqlite": "1.0.1","Microsoft.EntityFrameworkCore.Tools": {"version": "1.0.0-preview2-final","type": "build"},"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0","Microsoft.Extensions.Configuration.Json": "1.0.0","Microsoft.Extensions.Configuration.UserSecrets": "1.0.0","Microsoft.Extensions.Logging": "1.0.0","Microsoft.Extensions.Logging.Console": "1.0.0","Microsoft.Extensions.Logging.Debug": "1.0.0","Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0","Microsoft.VisualStudio.Web.CodeGeneration.Tools": {"version": "1.0.0-preview2-update1","type": "build"},"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {"version": "1.0.0-preview2-update1","type": "build"}},"tools": {"Microsoft.AspNetCore.Razor.Tools": {"version": "1.0.0-preview2-final","imports": "portable-net45+win8+dnxcore50"},"Microsoft.AspNetCore.Server.IISIntegration.Tools": {"version": "1.0.0-preview2-final","imports": "portable-net45+win8+dnxcore50"},"Microsoft.EntityFrameworkCore.Tools": {"version": "1.0.0-preview2-final","imports": [        "portable-net45+win8+dnxcore50",    
     "portable-net45+win8"]},"Microsoft.Extensions.SecretManager.Tools": {"version": "1.0.0-preview2-final","imports": "portable-net45+win8+dnxcore50"},"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {"version": "1.0.0-preview2-final","imports": [        "portable-net45+win8+dnxcore50",
       "portable-net45+win8"]}},"frameworks": {"netcoreapp1.1": {"imports": [        "dotnet5.6",        "dnxcore50",  
     "portable-net45+win8"]}},"buildOptions": {"debugType": "portable","emitEntryPoint": true,"preserveCompilationContext": true},"runtimeOptions": {"configProperties": {"System.GC.Server": true}},"publishOptions": {"include": [      "wwwroot",      "**/*.cshtml",    
 "appsettings.json",      "web.config"]},"scripts": {"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ],"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath%
                   --framework %publish:FullTargetFramework%"
]},"tooling": {"defaultNamespace": "WebApplication"} }

msbuild

可以看出,两者的区别还是蛮大的。

其他

关于 RC4 Tools 其他 sdk 命令,和以前的没多大区别,创建一个项目并运行的基本的流程仍然是

dotnet new console
dotnet restore
dotnet build
dotnet run

原文地址:http://www.cnblogs.com/savorboard/p/dotnetcore-msbuild-sdk.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

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

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

相关文章

mysql加索引快很多

3秒 变成 0.1秒 左连接的字段加索引 order by字段加索引 频繁使用的检索字段加索引

jQuery 基础教程 (四)之jQuery中的DOM操作

一、jQuery 中的 DOM 操作 (1)DOM(Document Object Model—文档对象模型):一 种与浏览器, 平台, 语言无关的接口, 使用该接口可以 轻松地访问页面中所有的标准组件 (2)DOM 操作的分类: (A)DOM Core: DOM Core 并不专…

.Net大户的选择:Windows Container在携程的应用

数人云上海&深圳两地“ 容器之Mesos/K8S/Swarm三国演义”的嘉宾精彩实录第四弹!小数已经被接连不断的干货搞晕了,沉浸技术的海洋好幸福~Windows container在国内的实践还比较少,携程作为.Net大户,率先进行了调研和实践应用&am…

真正理解线程上下文类加载器(多案例分析)

转载自 真正理解线程上下文类加载器(多案例分析) 前置知识: java类加载器不完整分析 前言 此前我对线程上下文类加载器(ThreadContextClassLoader,下文使用TCCL表示)的理解仅仅局限于下面这段话&#x…

Docker4Dev #6 使用 Windows Container 运行.net应用

关于d4d系列:之前这个系列叫做docker4dotnet,因为当时主要是为了能够探索在docker上运行.net应用;现在我觉得应该叫做docker4developer,因为我希望能够帮助更多的开发人员使用docker技术。今天这篇就算是新的Docker4Dev系列的开始…

Windows 容器

什么是容器 它们是隔离、资源控制且可移植的操作环境。 基本上,容器是一个隔离的位置,应用程序可在其中运行,而不会影响系统的其他部分,并且系统也不会影响该应用程序。 容器是虚拟化的下一个演化。 如果你在容器内,看…

选择排序+推导过程

图解 代码实现 package com.atguigu.sort;import java.util.Arrays; import java.util.List;/*** 创建人 wdl* 创建时间 2021/3/21* 描述*/ public class SelectSort {public static void main(String[] args) {int []arr{101,34,119,1};System.out.println("排序前"…

Echart折线图 柱状图

echat_百度搜索 Examples - Apache ECharts Examples - Apache ECharts Examples - Apache ECharts 修改左侧的数据 点击右侧下载可以得到html页面 Examples - Apache ECharts Examples - Apache ECharts

软件定义数据中心—Windows Server SDDC技术与实践

《软件定义数据中心—Windows Server SDDC技术与实践》是国内第一本讲解微软Windows Server 软件定义数据中心的中文图书,书中系统、全面地介绍了微软Windows Server 软件定义数据中心各个模块(SDS/SDN/SDC/容器)的概念、技术和架构&#xff…

插入排序+思路分析

图解 代码实现 package com.atguigu.sort;import java.util.Arrays;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class InsertSort {public static void main(String[] args) {int[] arr{101,34,119,1};insertSort(arr);}//插入排序public static void insertSort(in…

.NET 十五岁,谈谈我眼中的.NET

2002年2月13日,第一个版本随着visual studio.net的发布,今天已经走过15年, .net团队写了一篇文章,里面有一个视频,Anders Hejlsberg已是白发苍苍的老人,我也从刚出校门的码农长成软件开发工程师,我爱编程。…

理解并从头搭建redis集群

部分开发人员工作当中只是在应用中使用redis,比如用来做数据结果的缓存。而且现在有很多不错的redis客户端工具(redisson),基本上可以不用关注redis命令就可以完成相当部分的功能。所以可能会对如下这些问题关注点不够: 如何容灾?…

希尔排序+过程分析

图解 代码实现 package com.atguigu.sort;import java.util.Arrays;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class ShellSort {public static void main(String[] args) {int[] arr {8, 9, 1, 7, 2, 3, 5, 4, 6, 0};shellSort(arr);}//使用逐步推导的方式来编写…

Java 程序员必须掌握的 5 个注解

转载自 Java 程序员必须掌握的 5 个注解 自 JDK5 推出以来,注解已成为Java生态系统不可缺少的一部分。虽然开发者为Java框架(例如Spring的Autowired)开发了无数的自定义注解,但编译器认可的一些注解非常重要。 在本文中&#xff…

Docker4Dev#7 使用 Windows Container运行ASP.NET MVC 2 + SQLExpress 应用

上一篇Windows Container文章中给大家介绍了如何使用Windows Container运行一个传统的.net 4.5 web应用程序,当时我们使用了默认的Visual Studio模版创建了一个简单的项目,而且没有链接数据库。我相信使用.net进行应用开发的程序员们一定在想&#xff0c…

Mybatis+MySQL动态分页查询数据经典案例

最近在用Mybatis做项目的时候遇到了不少问题,今天我就在这和大家分享一下,稀稀拉拉的研究了两天,终于搞好了!开发人员:1111开发软件:Myeclipse用到的框架技术:Mybatis数据库:MySql主…

那些年的骗子

中午一觉睡醒之后,忽然发现多年不联系的初中同学给我发了个消息,觉得事情没那么简单:正好我的公众号需要大量的用户,我就顺水推舟了!一看到QQ的安全提示,我就感觉事情确实不妙!初步推断对方是个…

干货 | 彻底弄懂 HTTP 缓存机制及原理

转载自 干货 | 彻底弄懂 HTTP 缓存机制及原理 前言 Http 缓存机制作为 web 性能优化的重要手段,对于从事 Web 开发的同学们来说,应该是知识体系库中的一个基础环节,同时对于有志成为前端架构师的同学来说是必备的知识技能。 但是对于很多…

Visual Basic的未来之路

上周,微软宣布了他们改变Visual Basic语言未来发展计划的想法。这次公布给Visual Basic开发人员留下了很多不确定性,但Visual Basic语言的设计者Anthony D.Green说明了这个新策略的一些细节。 Green首先列出了当时使用VB进行开发的四个基础指导原则&…

快速排序+思路分析

图解 代码实现 package com.atguigu.sort;import com.sun.org.apache.xpath.internal.WhitespaceStrippingElementMatcher;import java.util.Arrays;/*** 创建人 wdl* 创建时间 2021/3/22* 描述*/ public class QuickSort {public static void main(String[] args) {//[-9,78,…