关于Net Core 多平台程序的Framework问题:
(本文只是推测,欢迎大家指正)
最近在研究NetCore的多平台问题,起因是有一个Winform的项目,由于跨平台的要求,想改为NetCore的MVC6项目,但是同时也想保留原来的Winform项目。
所以,一些DLL必须要做到即可以在Winform中使用,也可以在WebForm中使用,也就是所谓的多平台的问题。
当然,大部分情况下,NetCore可以很从容的进行多平台的编译,但是,也有一些库的话,不是NetCore内置的库,需要进行一些配置才行。
首先从结论开始说吧:

{"version": "1.0.0-*","dependencies": {"mongocsharpdriver": "2.3.0-rc1","MongoDB.Driver": "2.3.0-rc1"},"frameworks": {"netcoreapp1.0": {"imports": "netcoreapp1.0","dependencies": {"System.Xml.XmlSerializer": "4.0.11" }},"net462": {"frameworkAssemblies": {"System.Xml": "4.0.0.0","System.Xml.XmlSerializer": "4.0.10"}}}
}

由于程序中使用到了XmlSerializer的一些功能,如果不进行配置的话,NetCoreApp的版本也是无法编译的。
理由大致如下:
netcoreapp1.0 实现了NetStardard1.6版本
在NetStardard1.6版本中没有XmlSerializer。(System.Xml.ReaderWriter 和 System.Xml.XDocument是有的。)

        <dependency id="System.Xml.ReaderWriter" version="4.0.11" /><dependency id="System.Xml.XDocument" version="4.0.11" />

完整的列表可以查看你的系统中如下文件:
C:\Users\yourname.nuget\packages\NETStandard.Library\1.6.0\NETStandard.Library.nuspec

这里添加XmlSerializer可以直接添加到root下面的dependencies里面,但是如果这样做的话,你会发现net462的地方会出现问题,
net462,应该是Framework 4.6.2的时候,是无法支持XmlSerializer的4.0.11版本的。理由如下:

4.0.11版本支持4.5,但是不支持4.6.
再看一下4.0.10,这个是支持4.6的

但是,如果你将net462,改为452,则必须改为 "System.Xml.XmlSerializer": "4.0.0.0"
我不知道为什么这里4.0.10不可以。

这个时候还必须注意到netcoreapp1.0使用dependencies,而net462使用的是frameworkAssemblies引入程序的。这里的区别还不是非常清楚。
虽然在github上面有对于project.json的详细介绍,前者是用来指定Package的,后者是指定具体AssebleLevel的引用。

当前这个阶段,关于project.json的一些问题还是比较麻烦的,资料其实也在不停修订中,特别是NetFrame和Core之间,存在着兼容性的问题,所以说多平台程序还是有些注意点的。
当然,如果是简单的跨平台,就是Net Core,不存在兼容性问题了,倒是存在一些功能缺失的问题。

另外,如果发现NetCore 1.0.1安装错误,请先删除1.0.0,然后再安装一次。

本文会随时更新新的发现。

2016/09/18:
如果指定了多平台,现在如果在csproj里面引用xProj,则发生无法找到引用的问题。但是如果在csproj里面直接引用DLL的话,则可以正常使用。
2016/09/21:
在当前的Net Core中,不支持在 csproj 导入 xproj 。

你好,目前是不支持从 csproj 引用 xproj 项目的,这项工作会在 core 1.1 版本中做这个事情,1.1版本已经没有 xproj 项目,升级后的visual studio会自动将 xproj 重命名为 csproj,预计在16年年底或者17年初发布。

目前处理你这种情况有两种方式:
1、将你的程序集打包dll发布到Nuget,或者是通过引用本地程序集的方式引用。
2、转换你的 csproj 为 xproj 。

希望能够帮助你。 :)

转载于:https://www.cnblogs.com/TextEditor/p/5872907.html

关于Net Core 多平台程序的Framework问题相关推荐

  1. 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

    创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...

  2. NDC 2010视频下载:看看其他微软平台程序员们都在做什么

    原文地址:<NDC 2010视频下载:看看其他微软平台程序员们都在做什么> NDC(Norwegian Developers Conference,挪威开发者大会)是一年一度的挪威最大的微 ...

  3. .NET: 使用.NET Core CLI开发应用程序

    要开发.NET Core应用程序,除了使用强大的Visual Studio之外,还可以使用.NET Core CLI. .NET Core CLI (Command-Line Interface),也 ...

  4. 什么是.NET Core ?它和.NET Framework 有什么不同?

    .NET Core  已经发布好几年了,很多.NET 程序员也一定跟我一样心中一直有以下疑问, .NET Core到底是不是  .NET 的下一个版本?还是说只是  .NET 支持跨平台的一个版本? ...

  5. .Net 初步学习笔记之一——.Net 平台与.Net FrameWork框架的关系

    .Net 包含两部分 .Net平台 和.Net FrameWork 框架 1..Net FrameWork框架包含于.Net平台. .Net FrameWork提供环境和支撑保证.Net平台运行. 2 ...

  6. ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)...

    在正式进入主题之前我们来看下几个概念: 一.依赖倒置 依赖倒置是编程五大原则之一,即: 1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象. 2.抽象不能依赖于具体,具体依赖于抽象. 其中上层就 ...

  7. .NET Core多平台项目模板eShopOnContainers编译手记

    之前写了一个功能性的文件上传asp.net core的小程序,加上点七七八八的东西,勉强能够应付了,打算学习一下微软的官方.NET CORE微服务示例https://github.com/dotnet ...

  8. 在Azure Container Service创建Kubernetes(k8s)群集运行ASP.NET Core跨平台应用程序

    引子 在此前的一篇文章中,我介绍了如何在本地docker环境中运行ASP.NET Core跨平台应用程序,看起来非常不错,不是吗?那么,如果我们希望真正在实际的生产环境去部署和运行这个应用程序,应该怎 ...

  9. Entity Framework Core 3.1 和 Entity Framework 6.4 发布

    目前,Entity Framework Core 3.1 和 Entity Framework 6.4 已正式发布. EF Core 3.1的获取方式 EF Core 3.1 作为一组 NuGet 软 ...

  10. Entity Framework Core 3.0 和 Entity Framework 6.3 正式发布

    Entity Framework Core 3.0 和 Entity Framework 6.3 通用版发布了,接下来我们看看它的新内容: Entity Framework Core 3.0 EF C ...

最新文章

  1. 借助Redis锁,完美解决高并发秒杀问题
  2. 分布式锁用Redis好?还是Zookeeper好?
  3. Python 数据类型及其用法
  4. 【CIC滤波器】基于MATLAB/FPGA的数字CIC滤波器的设计
  5. Repo Jacking:依赖关系仓库劫持漏洞,影响谷歌GitHub等7万多个开源项目的供应链...
  6. pandas怎么去除nan_pandas缺失值处理之——如何消去Nan值对数字型字符串数据类型的影响,让数字型字符串保持原始str类型,而不会自动变为float类型?...
  7. RFC 6528 翻译
  8. NYOJ题目48-小明的调查作业
  9. Jupyter Notebook的使用02—两种模式的快捷操作
  10. apizza开发工具
  11. 必读的android 文章- 收藏集 - 掘金
  12. python pygame实现简单的网游 1
  13. linux nodejs 502错误,node.js应用程序与nginx 502错误的网关错误
  14. 亿阳信通面试 亿阳信通笔试 面经大全
  15. 在linux前台和后台运行程序
  16. 文件管理系统(文件版)
  17. BZOJ 2901: 矩阵求和
  18. C-Kermit在linux 下的安装和使用
  19. C# Windows-API-Code-Pack for .Net
  20. 凯西·牛顿(Casey Newton)即将离任

热门文章

  1. CPU软编码视频,比GPU更好?
  2. VS2017编译OpenJDK,编译通过的工程包下载链接
  3. 卫星地图上有没有UFO影像?
  4. 管理感悟:承认错误,善于总结
  5. linux卸载rpm安装的golang,linux下go安装/卸载重装-Go语言中文社区
  6. 语言混编之java调用c_Java通过JNI调用C语言库
  7. android 热更新jar,Android热更新之so库的热更新
  8. VC++ 只运行一个程序实例
  9. python pandas series想赋予新的值_Python-pandas根据其他列的值创建新列/逐行应用多列的功能...
  10. excel趋势线公式导出_除了类 Excel, SpreadJS 表格控件还能为系统开发带来什么价值?...