自包含 .NET Core应用程序
.NET 是完全开源的,而且 .NET Core 是一个您可以免费下载的开源与跨平台 framework。您可以到 http://dot.net 获取 Mac、Windows 与大多数的 Unix 系统的版本。还可以使用免费、跨平台的 Visual Studio Code,用VS code您就可以随时随地编写 C# 与 F#。
有两种方式来部署一个 .NET Core 应用程序,FDD 与 SCD。三个字的缩写可能看不懂,它们的意思是 Framework-dependent 与 Self-contained。当 .NET Core 安装在 Windows 中,它会存放在 C:\Program Files\dotnet。在「shared」文件夹内会有一堆可以共享的 .NET 程序集。这里可以有多个文件夹,就如同下图,您可以看到我的文件夹。您也可以安装多个 .NET Core 的不同版本。
当您安装您的应用程序与它的 dependencies 而并非 .NET Core 本身,这时您就会需要 .NET Core 已经被安装在目标的机器上。对于 Web App 或有很多应用程序的系统来说并没有什么问题,但如果我想要写一个应用程序,而且只用一个 zip 压缩包给你或在u盘上,而我就想要它能运行。我将会包含 .NET Core 在其中,而整个应用就是 Self Contained 部署。
而这样将会使我的「Hello World」应用程序变得大于我使用现存的 system-wide 安装,但我知道它就是可以 Work,因为它将会是完全独立的。
如果我以 self-contained 的方式来部署我的应用程序,有一点很重要的是,我将会有责任要维护 .NET Core 并让它保持在最新的版本。我还需要提前决定我的目标平台。如果我想要让它在 Windows、Mac 与 Linux 上执行成功,我将需要囊括那些目标平台并为它们构建部署套装。这些大多都很直观,不过还是知道一下比较好。
我将拿我的小小应用程序(我只是用一个「dotnet new」的应用程序)并在文本编辑器中修改 project.json。
我的应用程序是一个 .NETCore.App,但它将不会使用已经安装的 .NET Core 平台。它将使用本地版本,所以我从这个 dependency 删除「type=’platform’」。
"frameworks": { "netcoreapp1.0": { "dependencies": { "Microsoft.NETCore.App": { "version": "1.0.1"}}} }
接下来我写了一个 runtimes 的部分来指定我想要针对哪些平台。而这里有一个全部 Runtime ID 的清单。
"runtimes": { "win10-x64": {}, "osx.10.10-x64": {}, "ubuntu.14.04-x64": {}}
在执行「dotnet restore」您会想要像这样构建:
dotnet build -r win10-x64 dotnet build -r osx.10.10-x64 dotnet build -r ubuntu.14.04-x64
然后发布版本在您测试之后。
dotnet publish -c release -r win10-x64 dotnet publish -c release -r osx.10.10-x64 dotnet publish -c release -r ubuntu.14.04-x64
一旦这个完成,我就有了我的应用程序独立在 n 个文件夹,并准备好部署到任何我想要的系统。
您可以在 Win10 文件夹看到我的「MYAPPLICATION.exe」(我的叫做 scd.exe)可以直接执行,而并非像开发者那样用「dotnet run」来执行。
在 .NET Core Docs 里有许多不错的文章,教您如何调整与精准地定义要为您的 self contained 应用程序部署什么。您可以对.NET Core 做大量的修整,而有人说那将会变得越来越自动化在未来,有可能下到方法等级。
原文地址:https://blogs.msdn.microsoft.com/msdntaiwan/2016/09/20/selfcontainednetcoreapplications/
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
自包含 .NET Core应用程序相关推荐
- 在ASP.NET Core应用程序中使用分布式缓存
本文要点 ASP.NET Core内置了分布式缓存接口. 分布式缓存的主要好处有性能.数据共享和稳定性. Couchbase服务器是一个内存优先的数据库,非常适合作为分布式缓存. NuGet程序包使得 ...
- netcore更新dll要停止_使 .NET Core 应用程序容器化
在本教程中,你将了解如何使用 Docker 容器化 .NET Core 应用. 容器具有很多特性和优点,如具有不可变的基础结构.提供可移植的体系结构和实现可伸缩性. 此影像可用于为本地开发环境.私有云 ...
- 【实验手册】使用Visual Studio Code 开发.NET Core应用程序
.NET Core with Visual Studio Code 目录 概述... 2 先决条件... 2 练习1: 安装和配置.NET Core以及Visual Studio Code 扩展... ...
- 使用插件创建 .NET Core 应用程序
使用插件创建 .NET Core 应用程序 本教程展示了如何创建自定义的 AssemblyLoadContext 来加载插件.AssemblyDependencyResolver 用于解析插件的 ...
- 5种设置ASP.NET Core应用程序URL的方法
默认情况下,ASP.NET Core应用程序监听以下URL: •http://localhost:5000•https://localhost:5001 在这篇文章中,我展示了5种不同的方式来更改您的 ...
- 将终结点图添加到你的ASP.NET Core应用程序中
在本文中,我将展示如何使用DfaGraphWriter服务在ASP.NET Core 3.0应用程序中可视化你的终结点路由.上面文章我向您演示了如何生成一个有向图(如我上篇文章[译]使用DOT语言和G ...
- 使用Azure Application Insignhts监控ASP.NET Core应用程序
Application Insignhts是微软开发的一套监控程序.他可以对线上的应用程序进行全方位的监控,比如监控每秒的请求数,失败的请求,追踪异常,对每个请求进行监控,从http的耗时,到SQL查 ...
- 使用Helm将ASP.NET Core应用程序部署到Kubernetes容器集群
在<容器化单页面应用中RESTful API的访问>以及<容器化单页面应用中Nginx反向代理与Kubernetes部署>两篇文章中,我介绍了一套容器化ASP.NET Core ...
- 使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序
说在前面 在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述. 同时请确保您本地开发机器已完成如下安装: Docker 18.06 或更 ...
最新文章
- MySQL时间段datetime格式查询比较 -易犯错误解决
- Ybquery项目部署idea
- java过滤器应用实例_Servlet过滤器Filter的简单介绍(附示例)
- java基础50道编程题
- python代码运行顺序_python 代码运行顺序问题?
- Oracle 逗号分割的字符串转换为可放入in的语句
- Pycharm汉化包+操作步骤
- 【国科大】计算机类课程点评(更新中)
- 一次让你搞懂Android应用签名
- 文字编码和Unicode
- OCR扫描识别录入之汽车车架号(VIN码)识别查询系统
- opencore 引导 近完美 黑苹果EFI(技嘉H310/I5-9400F/RX560D)
- Matlab之数据筛选
- 【C语言】简易版_飞机小游戏
- Anycloud平台LOGO生成方法
- 小白对于Linux的学习
- 被拿走的雨伞——我想到的
- 日历组件(可加上一年下一年))
- ps快捷键对应的英文字母缩写
- Pillow库的用法
热门文章
- 系统集成相关岗位理解
- 让未备案的网站先飙起来
- insert /*+ APPEND */
- SQLite.NET (32位) 在64位环境中无法正常调试
- ftp服务器搭建遇到的问题
- SharePoint 2007 Select People and Groups中搜索不到其他Domain账户的问题[已解决]
- Delphi 与 DirectX 之 DelphiX(46): TDIB.DoAntiAlias;
- ABP vNext微服务架构详细教程——项目部署
- C#中的表达式和运算符
- 使用Brighter实现轻量型独立管道