難以接受你的改變:從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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM