难以接受你的改变:从project.json到.csproj
自从微软做了一个艰难的决定——.NET Core彻底放弃project.json,全面改回.csproj——至今,虽然赞美之声不断,但我依然不喜欢也难以接受这样的改变。
难以接受主要有两方面的原因:
1)由繁入简易,由简入繁难
习惯了json格式的简洁,很难再适应xml格式的繁琐。无论微软怎么简化.csproj,与project.json天生的简洁相比也是望尘莫及。简单对比一下,立马就能体会到。
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="1.2.0-*" />
</ItemGroup>
</Project>
{
"dependencies": {
"Microsoft.AspNetCore.DataProtection": "1.2.0-*"
}
}
用 project.json 的时候经常喜欢直接在 project.json 文件中修改,可是面对 .csproj 却少了直接修改的欲望。
2)xml与json配置文件的混杂带来不一致的编辑体验
改变的只是project.json,其它的配置文件依然是json格式,比如appsettings.json,两者混杂在一起更显.csproj的格格不入,仅仅这个不一致的编辑体验就让人难以适应。
那微软为什么要做这样一个打自己脸的艰难决定?我想根本原因是为了 .NET Core 能用上历史悠久的 MSBuild 作为 Build工 具,.NET 平台上的很多工具都依赖 MSBuild ,继续使用 MSBuild 有很大的连锁效益。但让 .NET Core 用上 MSBuild 并非只有这一条路,比如让 MSBuild 支持 project.json ,微软为什么选择放弃 project.json 的下策呢?要么微软偷懒,要么因为 MSBuild 的本身设计问题造成很难实现对 project.json 的支持?后者的可能性非常大,因为 MSBuild 过于依赖 xml 配置文件(build任务都是通过xml配置定义的),要它支持另外一种格式的配置文件改动可能非常大,微软选择这样的下策可能处于无奈。虽然理解微软的难处,但站在用户的角度,我还是更喜欢 project.json,难以接受 .csproj。
难以接受你的改变:从project.json到.csproj的更多相关文章
- .NET Core 构建配置文件从 project.json 到 .csproj
从 .NET Core SDK 1.0 Preview 3 build 004056 开始,.NET Core 弃用 project.json,回归 .csproj,主要原因是为了兼容 MSBuild ...
- .NET Core项目从xproj+project.json向csproj迁移简介
3月7日,微软发布了Visual Studio 2017 RTM,与之一起发布的还有.NET Core Runtime 1.1.0以及.NET Core SDK 1.0.0,尽管这些并不是最新版,但也 ...
- [C#] .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题
作者: zyl910 一.缘由 项目规模大了后,经常会出现源码文件分布在不同目录的情况,但.NET Core项目默认只有项目目录下的源码文件,且不支持"Add As Link"方式 ...
- [.NET Core 24]把project.json迁移到.csproj
链接:https://blog.jetbrains.com/dotnet/2017/04/04/rider-eap-update-csproj-based-net-core-support-migra ...
- .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题
作者: zyl910 一.缘由 项目规模大了后,经常会出现源码文件分布在不同目录的情况,但.NET Core项目默认只有项目目录下的源码文件,且不支持“Add As Link”方式引入文件.这时需要手 ...
- .NET Core系列 : 2 、project.json 这葫芦里卖的什么药
.NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...
- ASP.NET Core project.json imports 是什么意思?
示例代码: "frameworks": { "netcoreapp1.0.0": { "imports" : "portable- ...
- ASP.NET Core中的project.json何去何从?
Shawn Wildermuth (https://wildermuth.com/2016/05/12/The-Future-of-project-json-in-ASP-NET-Core) If y ...
- 【循序渐进MVC】第一回——一物多用Project.json依赖关系之dependencies节点
Project.json统一了ASP.NET vNext之前版本的packages.config.NuGet 配置(nuspec)以及项目文件(csprojs):并集成在Project.json中. ...
随机推荐
- 基于Ubuntu部署 memcached 服务
系统要求:Ubuntu 16.04.1 LTS 64 位操作系统 安装并启动 memcached 服务 安装 memcached 使用apt-get安装 memcached sudo apt-get ...
- 简单的redis 的list应用
error_reporting(E_ALL); if(empty($a)){ echo 111; }else{ echo 3333; } die; phpinfo();die; $redis = ne ...
- 每日英语:Dashing the China Dream
Much has been said about what the 'China Dream' really means to many Chinese -- whether it is nation ...
- SoapUI5.0创建WebService接口模拟服务端(转)
转载自:https://blog.csdn.net/a19881029/article/details/26348627 使用SoapUI创建WebService接口模拟服务端需要接口描述文件 Mat ...
- Android Launcher分析和修改7——AllApp全部应用列表(AppsCustomizeTabHost)
今天主要是分析一下Launcher里面的所有应用列表.Android4.0 Launcher的所有应用列表跟2.X比较大的区别就是多了Widget的显示.下面会详细分析Launcher里面有关所有应用 ...
- 【九天教您南方cass 9.1】01 安装Cad和Cass9.1
同学们大家好,欢迎收看由老王测量上班记出品的cass9.1视频课程 今后会将cass的教程目录定期发布在测量空间中. 我是本节课主讲老师九天. [点击索取cass教程]5元立得 (给客服说暗号:“老王 ...
- 【emWin】例程二十一:窗口对象——Edit
简介: 编辑框通常用作输入文本的主要用户界面,也可使用编辑字段以二进制.十进制或十六进制模式输入值. 触摸校准(上电可选择是否进入校准界面) 实验指导书及代码包下载: 链接:http://pan.ba ...
- Spring MVC学习摘要
1. context:component-scan标签的use-default-filters属性的作用以及原理分析 http://www.cnblogs.com/hafiz/p/5875770.ht ...
- Git 藏匿操作
假设您正在为您的产品实施的一项新功能.你的代码是在推进开发进度而客户不断升级需求突然来了.正因为如此,你必须保持放下你的新功能,工作几个小时.你不能提交你的部分代码,也不能扔掉你的变化.所以,你需要一 ...
- Fedora Server 21 安装 搜狗拼音输入法
最新文章:Virson’s Blog 借鉴文章:博客园-怒杀神殿 ChinaUnix-firo 百度贴吧-fedora吧 方法一:解压deb安装包方式安装: 如果本机已安装ibus,需要先卸载, ...