新的项目我们想用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项目的更多相关文章

  1. .NET开发框架(五)-IIS上部署ASP.NET Core项目教程

    系列教程:从初学者到架构师的一步步蜕变 本篇经验将和大家介绍如何在IIS上部署ASP.NET Core项目,希望对初学.NET CORE的童靴入门有所帮助! 1.打开VS,创建项目,选择ASP.NET ...

  2. vs2017 在win10下安装后开始运行asp.net core 项目时出错

    vs2017 在win10下安装后开始运行asp.net core 项目时出错 报找不到什么 解决方法: 下载 asp.net 2.2 安装好,重新启动电脑问题解决.

  3. Web Server 在IIS上部署ASP.NET Core项目

    在IIS上部署ASP.NET Core项目 一.配置应用程序池为无托管: 二.安装ASPNETCoreModule:(核心) 下载地址:https://go.microsoft.com/fwlink/ ...

  4. ASP.NET Core 中文文档 第二章 指南(5) 在 Nano Server 上运行ASP.NET Core

    原文 ASP.NET Core on Nano Server 作者 Sourabh Shirhatti 翻译 娄宇(Lyrics) 校对 刘怡(AlexLEWIS).许登洋(Seay).谢炀(kile ...

  5. 关于 IIS 上运行 ASP.NET Core 站点的“HTTP 错误 500.19”错误

    昨天回答了博问中的一个问题 —— “HTTP 错误 500.19 - Internal Server Error dotnetcore”,今天在这篇随笔中时候事后诸葛亮地小结一下. 服务器是 Wind ...

  6. 在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.总结 ...

  7. 在IIS上发布并运行ASP.NET Core

    英文原文地址:https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Application ...

  8. 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 ...

  9. 在 Mac OS 上创建并运行 ASP.NET Core 1.0 网站

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

随机推荐

  1. 基于DDD的现代ASP.NET开发框架--ABP系列文章总目录

    ABP相关岗位招聘:给热爱.NET新技术和ABP框架的朋友带来一个高薪的工作机会 ABP交流会录像视频:ABP架构设计交流群-7月18日上海线下交流会的内容分享(有高清录像视频的链接) 代码自动生成: ...

  2. [.NET] 打造一个很简单的文档转换器 - 使用组件 Spire.Office

    打造一个很简单的文档转换器 - 使用组件 Spire.Office [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6024827.html 序 之前,& ...

  3. “老坛泡新菜”:SOD MVVM框架,让WinForms焕发新春

    火热的MVVM框架 最近几年最热门的技术之一就是前端技术了,各种前端框架,前端标准和前端设计风格层出不穷,而在众多前端框架中具有MVC,MVVM功能的框架成为耀眼新星,比如GitHub关注度很高的Vu ...

  4. Android 中的mvvm

    我们来了解一下MVVM模式与Databinding ,MVVM是一种模式,Databinding 是一种框架.DataBinding是一个实现数据和UI绑定的框架.而ViewModel和View可以通 ...

  5. CodingLife主题更新

    收到反馈说CodingLife主题某些地方显示有问题,于是进行了更新,并且已提交.官方那边正在进行测试,我自己这边测完应该是没问题的,但不知道官方啥时候会进行更新,所以把CSS代码贴出来,有需要的可以 ...

  6. CacheManager:–个通用缓存接口抽象类库

    CacheManager是–个缓存通用接口抽象类库,它支持各种高速缓存提供者,例如Memcache,Redis,并且有许多先进的功能特性.具体可以访问官方网站  http://cachemanager ...

  7. UML类图(下):关联、聚合、组合、依赖

    前言 上一篇文章UML类图(上):类.继承.实现,讲了UML类图中类.继承.实现三种关系及其在UML类图中的画法,本文将接着上文的内容,继续讲讲对象之间的其他几种关系,主要就是关联.聚合.组合.依赖, ...

  8. 巧用location.hash保存页面状态

    在我们的项目中,有大量ajax查询表单+结果列表的页面,由于查询结果是ajax返回的,当用户点击列表的某一项进入详情页之后,再点击浏览器回退按钮返回ajax查询页面,这时大家都知道查询页面的表单和结果 ...

  9. 字符型图片验证码识别完整过程及Python实现

    字符型图片验证码识别完整过程及Python实现 1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越 ...

  10. 透过浏览器看HTTP缓存

    作为前端开发人员,对于我们的站点或应用的缓存机制我们能做的似乎不多,但这些却是与我们关注的性能息息相关的部分,站点没有做任何缓存机制,我们的页面可能会因为资源的下载和渲染变得很慢,但大家都知道去找前端 ...