上個月月底,VS2017RC版發(fā)布了,一個很大的特點就是將原來的xProj文件又改回了csproj了。
這樣一改,其實很多新的問題也暴露出來了,最嚴重的問題就是Net版本兼容性。
原來的Net體系大致是NetFramework,Net Core這樣的,雖然也有Net Standard 這樣的概念,但是很少有人會去關(guān)注。
但是,現(xiàn)在的VS將這三種體系都結(jié)合在一起了,傳統(tǒng)的Winform還是NetFramework體系,新的AspNet使用的是NetCore體系,但是動態(tài)連接庫使用的是NetStandard體系。
這三個體系是可以相互轉(zhuǎn)化的,通過試驗證明,在運行的層面,沒有什么問題,但是由于MSBuild還沒有跟上,所以VS里面報錯是密密麻麻,不忍直視。
新建的解決方案,一個是NetFrame的Winform,一個是Standard的動態(tài)鏈接庫。
下圖中就可以看到,動態(tài)鏈接庫是可以引入的(作為解決方案中的項目),但是存在警告。
同時可以看到最大的問題是VS里面,都是錯誤警告:
在原來的VS2015,使用project.json的時候,在上圖的左上角是可以選擇 NetFramework462,NetCore的,現(xiàn)在是無法選擇的。
暫時不知道VS2017的后續(xù)版本這么處理這個問題。
個人覺得這次NetCore的發(fā)展速度很快,但是思路卻有些混亂了,現(xiàn)在主要的問題是:
1.原本的庫,沒有辦法完整的移植到跨平臺的環(huán)境,除了UI的庫之外,很多涉及到平臺特性的庫,都是缺失的。
2.現(xiàn)在微軟的方向,即考慮到要通過NetStandard實現(xiàn)來作為標(biāo)準,又要兼容之前的NetCore的命名方式。估計近期有會出現(xiàn)一股命名潮。
3.VS工具不成熟的前提下,硬推Mac版的VS,其實Mac版的VS沒有什么亮點,雞肋。還不如全力完善Win版的VS。
[更新]
如果編輯了csproj文件
<PropertyGroup> <TargetFramework>netstandard1.6</TargetFramework> <TargetFramework>net462</TargetFramework> </PropertyGroup>
則發(fā)現(xiàn),項目無法編譯成功(單個TargetFramework可以編譯成功)
<PackageReference Include="System.Xml.XmlSerializer"> <Version>4.3.0</Version> </PackageReference>
這個包,在兩個Framework的時候無法使用。不知道怎么修改。
在過去project.json