上个月月底,VS2017RC版发布了,一个很大的特点就是将原来的xProj文件又改回了csproj了。
这样一改,其实很多新的问题也暴露出来了,最严重的问题就是Net版本兼容性。

原来的Net体系大致是NetFramework,Net Core这样的,虽然也有Net Standard 这样的概念,但是很少有人会去关注。
但是,现在的VS将这三种体系都结合在一起了,传统的Winform还是NetFramework体系,新的AspNet使用的是NetCore体系,但是动态连接库使用的是NetStandard体系。
这三个体系是可以相互转化的,通过试验证明,在运行的层面,没有什么问题,但是由于MSBuild还没有跟上,所以VS里面报错是密密麻麻,不忍直视。

新建的解决方案,一个是NetFrame的Winform,一个是Standard的动态链接库。

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

下图中就可以看到,动态链接库是可以引入的(作为解决方案中的项目),但是存在警告。

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

同时可以看到最大的问题是VS里面,都是错误警告:
Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

在原来的VS2015,使用project.json的时候,在上图的左上角是可以选择 NetFramework462,NetCore的,现在是无法选择的。
暂时不知道VS2017的后续版本这么处理这个问题。

个人觉得这次NetCore的发展速度很快,但是思路却有些混乱了,现在主要的问题是:
1.原本的库,没有办法完整的移植到跨平台的环境,除了UI的库之外,很多涉及到平台特性的库,都是缺失的。
2.现在微软的方向,即考虑到要通过NetStandard实现来作为标准,又要兼容之前的NetCore的命名方式。估计近期有会出现一股命名潮。
3.VS工具不成熟的前提下,硬推Mac版的VS,其实Mac版的VS没有什么亮点,鸡肋。还不如全力完善Win版的VS。

[更新]
如果编辑了csproj文件

  <PropertyGroup>
    <TargetFramework>netstandard1.6</TargetFramework>
    <TargetFramework>net462</TargetFramework>
  </PropertyGroup>

则发现,项目无法编译成功(单个TargetFramework可以编译成功)

    <PackageReference Include="System.Xml.XmlSerializer">
      <Version>4.3.0</Version>
    </PackageReference>

这个包,在两个Framework的时候无法使用。不知道怎么修改。

在过去project.json