关于Net Core 多平台程序的Framework问题
关于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问题相关推荐
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...
- NDC 2010视频下载:看看其他微软平台程序员们都在做什么
原文地址:<NDC 2010视频下载:看看其他微软平台程序员们都在做什么> NDC(Norwegian Developers Conference,挪威开发者大会)是一年一度的挪威最大的微 ...
- .NET: 使用.NET Core CLI开发应用程序
要开发.NET Core应用程序,除了使用强大的Visual Studio之外,还可以使用.NET Core CLI. .NET Core CLI (Command-Line Interface),也 ...
- 什么是.NET Core ?它和.NET Framework 有什么不同?
.NET Core 已经发布好几年了,很多.NET 程序员也一定跟我一样心中一直有以下疑问, .NET Core到底是不是 .NET 的下一个版本?还是说只是 .NET 支持跨平台的一个版本? ...
- .Net 初步学习笔记之一——.Net 平台与.Net FrameWork框架的关系
.Net 包含两部分 .Net平台 和.Net FrameWork 框架 1..Net FrameWork框架包含于.Net平台. .Net FrameWork提供环境和支撑保证.Net平台运行. 2 ...
- ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)...
在正式进入主题之前我们来看下几个概念: 一.依赖倒置 依赖倒置是编程五大原则之一,即: 1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象. 2.抽象不能依赖于具体,具体依赖于抽象. 其中上层就 ...
- .NET Core多平台项目模板eShopOnContainers编译手记
之前写了一个功能性的文件上传asp.net core的小程序,加上点七七八八的东西,勉强能够应付了,打算学习一下微软的官方.NET CORE微服务示例https://github.com/dotnet ...
- 在Azure Container Service创建Kubernetes(k8s)群集运行ASP.NET Core跨平台应用程序
引子 在此前的一篇文章中,我介绍了如何在本地docker环境中运行ASP.NET Core跨平台应用程序,看起来非常不错,不是吗?那么,如果我们希望真正在实际的生产环境去部署和运行这个应用程序,应该怎 ...
- 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 软 ...
- 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 ...
最新文章
- 借助Redis锁,完美解决高并发秒杀问题
- 分布式锁用Redis好?还是Zookeeper好?
- Python 数据类型及其用法
- 【CIC滤波器】基于MATLAB/FPGA的数字CIC滤波器的设计
- Repo Jacking:依赖关系仓库劫持漏洞,影响谷歌GitHub等7万多个开源项目的供应链...
- pandas怎么去除nan_pandas缺失值处理之——如何消去Nan值对数字型字符串数据类型的影响,让数字型字符串保持原始str类型,而不会自动变为float类型?...
- RFC 6528 翻译
- NYOJ题目48-小明的调查作业
- Jupyter Notebook的使用02—两种模式的快捷操作
- apizza开发工具
- 必读的android 文章- 收藏集 - 掘金
- python pygame实现简单的网游 1
- linux nodejs 502错误,node.js应用程序与nginx 502错误的网关错误
- 亿阳信通面试 亿阳信通笔试 面经大全
- 在linux前台和后台运行程序
- 文件管理系统(文件版)
- BZOJ 2901: 矩阵求和
- C-Kermit在linux 下的安装和使用
- C# Windows-API-Code-Pack for .Net
- 凯西·牛顿(Casey Newton)即将离任
热门文章
- CPU软编码视频,比GPU更好?
- VS2017编译OpenJDK,编译通过的工程包下载链接
- 卫星地图上有没有UFO影像?
- 管理感悟:承认错误,善于总结
- linux卸载rpm安装的golang,linux下go安装/卸载重装-Go语言中文社区
- 语言混编之java调用c_Java通过JNI调用C语言库
- android 热更新jar,Android热更新之so库的热更新
- VC++ 只运行一个程序实例
- python pandas series想赋予新的值_Python-pandas根据其他列的值创建新列/逐行应用多列的功能...
- excel趋势线公式导出_除了类 Excel, SpreadJS 表格控件还能为系统开发带来什么价值?...