自从微软做了一个艰难的决定——.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的更多相关文章

  1. .NET Core 构建配置文件从 project.json 到 .csproj

    从 .NET Core SDK 1.0 Preview 3 build 004056 开始,.NET Core 弃用 project.json,回归 .csproj,主要原因是为了兼容 MSBuild ...

  2. .NET Core项目从xproj+project.json向csproj迁移简介

    3月7日,微软发布了Visual Studio 2017 RTM,与之一起发布的还有.NET Core Runtime 1.1.0以及.NET Core SDK 1.0.0,尽管这些并不是最新版,但也 ...

  3. [C#] .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题

    作者: zyl910 一.缘由 项目规模大了后,经常会出现源码文件分布在不同目录的情况,但.NET Core项目默认只有项目目录下的源码文件,且不支持"Add As Link"方式 ...

  4. [.NET Core 24]把project.json迁移到.csproj

    链接:https://blog.jetbrains.com/dotnet/2017/04/04/rider-eap-update-csproj-based-net-core-support-migra ...

  5. .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题

    作者: zyl910 一.缘由 项目规模大了后,经常会出现源码文件分布在不同目录的情况,但.NET Core项目默认只有项目目录下的源码文件,且不支持“Add As Link”方式引入文件.这时需要手 ...

  6. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...

  7. ASP.NET Core project.json imports 是什么意思?

    示例代码: "frameworks": { "netcoreapp1.0.0": { "imports" : "portable- ...

  8. ASP.NET Core中的project.json何去何从?

    Shawn Wildermuth (https://wildermuth.com/2016/05/12/The-Future-of-project-json-in-ASP-NET-Core) If y ...

  9. 【循序渐进MVC】第一回——一物多用Project.json依赖关系之dependencies节点

    Project.json统一了ASP.NET vNext之前版本的packages.config.NuGet 配置(nuspec)以及项目文件(csprojs):并集成在Project.json中. ...

随机推荐

  1. tmux入门

    按键 man tmux和C+b?两个操作可以获得一切. C-b ? 显示快捷键帮助 C-b C-o 调换窗口位置,类似与vim 里的C-w C-b 空格键 采用下一个内置布局 C-b ! 把当前窗口变 ...

  2. APP安全测评checklist---Android

    首先,你的app得先混淆:AndroidStudio 混淆打包 先来个checklist: 编号 检查项目 测评结果 1 明文传输用户名.密码和验证码等敏感信息. 2 不安全的本地存储. 3 泄漏后台 ...

  3. swift常用第三方库

    网络 Alamofire:http网络请求事件处理的框架. Moya:这是一个基于Alamofire的更高层网络请求封装抽象层. Reachability.swift:用来检查应用当前的网络连接状况. ...

  4. MVC通用控件库展示-MVC4.0+WebAPI+EasyUI+Knockout--SNF快速开发平台3.0

    在我们开发中怎么才能提高效率,就是要有大量的公共组件(控件)可以直接使用而不用自己再开发一遍,既然是公共控件那也得简单实用才行.下面就介绍一下SNF-MVC当中的控件库. 总体控件库展示: 1.通用用 ...

  5. python中关于round函数的小坑

    这个一直都想写,但是因为这个点比较小,所以一直懒得动手.不过还是补上吧,留着早晚是个祸害. round函数很简单,对浮点数进行近似取值,保留几位小数.比如 >>> round(10. ...

  6. 微信小程序场景值

    场景值 基础库 1.1.0 开始支持,低版本需做兼容处理 当前支持的场景值有: 场景值ID 说明 1001 发现栏小程序主入口 1005 顶部搜索框的搜索结果页 1006 发现栏小程序主入口搜索框的搜 ...

  7. 每日英语:Don't Call Us Bossy

    [Confident girls are often called the other B-word, and it can keep them from reaching their full po ...

  8. 一次性将多个文件夹批处理压缩成多个.rar

    超级简单.不用自己写.bat批处理. 1. 打开winrar,选中所有要压缩的文件夹 2. 菜单->commands->add files to achive 3. 选中Files tab ...

  9. 【XMPP】Smack源码之初步认识

    Smack 概述 Smack是一个用于和XMPP服务器通信的类库,由此可以实现即时通讯和聊天. Smack主要优势 非常简单易用,并且有十分强大的 API.只需三行代码就可以向用户发关文本消息: XM ...

  10. js绝对地址图片转换成base64的方法

    //将图片转换成base64 function getBase64Image(url, callback){ var canvas = document.createElement('canvas') ...