在传统.NET Framework 上运行ASP.NET Core项目
新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如《使用 JavaScriptService 在.NET Core 里实现DES加密算法》,我们要估计等到.NET Core 1.2我们才会有大部分的API,通过NodeJs方式有点曲线救国的味道,很多人会不认同,如果要在纯的.NET Core下运行我们的ASP.NET Core项目,在特定的时间进度内很难办到,不仅仅我们所依赖的一些API还没有,还有我们大量的.NET Framwork的库还来不及迁移到.NET Standard 兼容。本文就是向你介绍如何在我们的.NET Framework 4.5以上的环境下跑我们的ASP.NET Core项目,让我们跟上.NET Core的发展步伐。
Scott hanselman 写了一篇文章《How to reference an existing .NET Framework Project in an ASP.NET Core 1.0 Web App》向我们介绍了如何.NET Framework 4.5以上的环境下跑我们的ASP.NET Core项目。这篇文章里有一张图解释了这么做的原理:

.NET 4.5以上的版本和.NET Core的底层的编译器和运行时都是一样的,ASP.NET Core 1.0也可以跑在NET Framework 4.6上,我们通过Visual Studio 2015 Update 3创建一个Web项目的时候有一个模板:

我们上面看到了3个ASP.NET Web项目类型:
- ASP.NET Web 应用程序。这就是 4.6版本的 ASP.NET MVC 与 Web API。它在.NET 框架上运行。
- ASP.NET Core Web应用程序在.NET Core 1.0 上运行,它是跨平台的。如果你选择它创建项目,你将能够在任何地方运行您的应用程序,但您不能引用"完整的".NET Framework 程序集
- ASP.NET Core Web应用程序在.NET 框架上运行。那就是新的 ASP.NET Core 1.0 ,统一了 MVC 和 Web API,不支持WebForms,但在Windows的.NET 框架上运行。这里有同学就有疑问了,最新的Mono 4.6 也实现了.NET 4.5的API,这个项目模板的应用能否在Mono上跑呢,答案应该是不行,因为Mono的底层编译器和运行时还没有和.NET Core统一,不过Mono正在路上,已经开始统一底层的编译器和运行时,具体大家可用去https://trello.com/b/vRPTMfdz/net-framework-integration-into-mono ,了解具体的工作进展,下个稳定版本Mono 4.8应该就可以支持了,具体可以参考 Dockerized .NET Core 1.0.1 and .NET Framework on Mono 4.7。
我们选择ASP.NET Core Web应用程序在.NET 框架上运行模板创建项目,创建出来是这样的:

接着我们再创建2个.NET Framework 4.5的库,然后在asp.net core应用里面引用:


我们来看asp.net core项目的project.json, 不久的将来在Visual Studio 2017 RC发布的时候,project.json 的功能会和csproj以及msbuild 合并在一起, 你会注意到 ClassLIbrary1 没有列出的最高级别依赖项节点下,但作为一种框架特定依赖像这样:

此外请注意,在这种情况下它是一种type="project"的依赖关系,在这种情况下,我没有建立 NuGet 包来进行引用。不过因为 .NET Core toolin 是在预览中有一些缺陷,这些缺陷要等等工具完善来修复。
在传统.NET Framework 上运行ASP.NET Core项目的更多相关文章
- .NET开发框架(五)-IIS上部署ASP.NET Core项目教程
系列教程:从初学者到架构师的一步步蜕变 本篇经验将和大家介绍如何在IIS上部署ASP.NET Core项目,希望对初学.NET CORE的童靴入门有所帮助! 1.打开VS,创建项目,选择ASP.NET ...
- vs2017 在win10下安装后开始运行asp.net core 项目时出错
vs2017 在win10下安装后开始运行asp.net core 项目时出错 报找不到什么 解决方法: 下载 asp.net 2.2 安装好,重新启动电脑问题解决.
- Web Server 在IIS上部署ASP.NET Core项目
在IIS上部署ASP.NET Core项目 一.配置应用程序池为无托管: 二.安装ASPNETCoreModule:(核心) 下载地址:https://go.microsoft.com/fwlink/ ...
- ASP.NET Core 中文文档 第二章 指南(5) 在 Nano Server 上运行ASP.NET Core
原文 ASP.NET Core on Nano Server 作者 Sourabh Shirhatti 翻译 娄宇(Lyrics) 校对 刘怡(AlexLEWIS).许登洋(Seay).谢炀(kile ...
- 关于 IIS 上运行 ASP.NET Core 站点的“HTTP 错误 500.19”错误
昨天回答了博问中的一个问题 —— “HTTP 错误 500.19 - Internal Server Error dotnetcore”,今天在这篇随笔中时候事后诸葛亮地小结一下. 服务器是 Wind ...
- 在Linux CentOS上部署Asp.Net Core项目(Tengine、Asp.Net Core、Centos、MySql)
一.前言 1.简单记录一下Linux CentOS 7中安装与配置Tengine的详细步骤. 2.简单比较一下Tengine 和Nginx 3.搭建Asp.net Core和部署 Web程序 4.总结 ...
- 在IIS上发布并运行ASP.NET Core
英文原文地址:https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Application ...
- Mono 4.0 Mac上运行asp.net mvc 5.2.3
Mono 4.0 已经发布,二进制包已经准备好,具体的发布说明参见:http://www.mono-project.com/docs/about-mono/releases/4.0.0/. 今天在Ma ...
- 在 Mac OS 上创建并运行 ASP.NET Core 1.0 网站
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
随机推荐
- 2015 西雅图微软总部MVP峰会记录
2015 西雅图微软总部MVP峰会记录 今年决定参加微软MVP全球峰会,在出发之前本人就已经写这篇博客,希望将本次会议原汁原味奉献给大家 因为这次是本人第一次写会议记录,写得不好的地方希望各位园友见谅 ...
- iOS二维码生成、识别、扫描等
二维码扫描 前言: 最近的项目中使用到了二维码,二维码这个模块功能也完成:觉得还是有必要总结一下用来做记录.好长时间没有写二维码了都忘记在差不多了,重新拾起来还是挻快的. 二维码使用场景: 生活中有很 ...
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
- Golang 编写的图片压缩程序,质量、尺寸压缩,批量、单张压缩
目录: 前序 效果图 简介 全部代码 前序: 接触 golang 不久,一直是边学边做,边总结,深深感到这门语言的魅力,等下要跟大家分享是最近项目 服务端 用到的图片压缩程序,我单独分离了出来,做成了 ...
- linux应用调试技术之GDB和GDBServer
1.调试原理 GDB调试是应用程序在开发板上运行,然后在PC机上对开发板上得应用程序进行调试,PC机运行GDB,开发板上运行GDBServer.在应用程序调试的时候,pc机上的gdb向开发板上的GDB ...
- Div Vertical Menu ver5
这个小功能,如果是算此次,已经是第5次修改了.可以从这里看到前4次:V1, http://www.cnblogs.com/insus/archive/2011/10/17/2215637.html V ...
- R abalone data set
#鲍鱼数据集aburl <- 'http://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data' ab ...
- AFNetworking报错"_UTTypeCopyPreferredTagWithClass", referenced from: _AFContentTypeForPathExtens
问题: 在和Unity交互的过程中,从Unity开发工具打包出来的项目文件,在添加AFNetworking库,运行时报出以下错误: Undefined symbols for architecture ...
- Android中Fragment与Activity之间的交互(两种实现方式)
(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...
- SQL SERVER导入数据到ORACLE的方法总结
我们偶尔会有将数据从SQL SERVER导入到ORACLE当中的这种需求,那么这种跨数据库导数有那些方法呢?这些方法又有那些利弊呢? 下面比较肤浅的总结了一些可行的方法. 1:生成SQL脚本然后去OR ...