在传统.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= ...
随机推荐
- 标准产品+定制开发:专注打造企业OA、智慧政务云平台——山东森普软件,交付率最高的技术型软件公司
一.公司简介山东森普信息技术有限公司(以下简称森普软件)是一家专门致力于移动互联网产品.企业管理软件定制开发的技术型企业.公司总部设在全国五大软件园之一的济南齐鲁软件园.森普SimPro是由Simpl ...
- Partition1:新建分区表
未分区的表,只能存储在一个FileGroup中:对Table进行分区后,每一个分区都存储在一个FileGroup,或分布式存储在不同的FileGroup中.对表进行分区的过程,是将逻辑上完整的一个表, ...
- GitHub实战系列汇总篇
基础: 1.GitHub实战系列~1.环境部署+创建第一个文件 2015-12-9 http://www.cnblogs.com/dunitian/p/5034624.html 2.GitHub实战系 ...
- nodejs中获取时间戳、时间差
Nodejs中获取时间戳的方法有很多种,例如: new Date().getTime() Date.now() process.uptime() process.hrtime() 平时想获取一个时间戳 ...
- UWP开发之Template10实践:本地文件与照相机文件操作的MVVM实例(图文付原代码)
前面[UWP开发之Mvvmlight实践五:SuspensionManager中断挂起以及复原处理]章节已经提到过Template10,为了认识MvvmLight的区别特做了此实例. 原代码地址:ht ...
- Angular2开发笔记
Problem 使用依赖注入应该注意些什么 服务一般用来做什么 指令一般用来做什么 angular2如何提取公共组件 angular2为什么不需要提公共组件 父组件与子组件之间如何通讯 什么时候应该使 ...
- Android 工具-adb
Android 工具-adb 版权声明:本文为博主原创文章,未经博主允许不得转载. Android 开发中, adb 是开发者经常使用的工具,是 Android 开发者必须掌握的. Android D ...
- CSS入门常见的问题
写在前面:本文简单介绍一下css的三大特性:层叠性.继承性.优先级.以及margin,padding,浮动,定位几个知识点.限于水平,不深入探讨,仅作为学习总结. 1,三特性 1)层叠性:同标签同权重 ...
- BPM流程中心解决方案分享
一.需求分析 在过去办公自动化的浪潮中,很多企业已经实施了OA流程,但随着客户的发展和对流程管理的越来越重视, 客户对流程应用需求越来越深 入,您可能面临以下需求: 1.流程功能不能满足需求,包括流程 ...
- JAVA装饰者模式(从现实生活角度理解代码原理)
装饰者模式可以动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活. 该模式的适用环境为: (1)在不影响其他对象的情况下,以动态.透明的方式给单个对象添加职 ...