自包含 .NET Core应用程序
来源:互联网 发布:免备案服务器 知乎 编辑:程序博客网 时间:2024/06/05 11:48
.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-x64dotnet build -r osx.10.10-x64dotnet build -r ubuntu.14.04-x64
然后发布版本在您测试之后。
dotnet publish -c release -r win10-x64dotnet publish -c release -r osx.10.10-x64dotnet 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应用程序
- .NET跨平台实践:Linux .Net Core自宿主应用程序瘦身记
- .NET跨平台实践:Linux .Net Core自宿主应用程序瘦身记
- .NET跨平台实践:Linux .Net Core自宿主应用程序瘦身记
- .NET Core 2.0应用程序大小减少50%
- ASP.NET Core 应用程序Startup类介绍
- .NET Core快速入门教程 4、使用VS Code开发.NET Core控制台应用程序
- 创建ASP.NET Core MVC应用程序(6)-添加验证
- 在.NET Core控制台应用程序中使用强类型配置
- 在.NET Core控制台应用程序中使用强类型配置
- 在.NET Core控制台应用程序中使用强类型配置
- Pro ASP.NET Core MVC(二)【第一个MVC 应用程序】
- 在Docker中运行asp.net core 跨平台应用程序
- 如何利用.NET Core搭建跨平台的控制台应用程序
- Linux使用Jexus托管Asp.Net Core应用程序
- 使用 dotnet watch 开发 ASP.NET Core 应用程序
- 在docker中运行ASP.NET Core Web API应用程序
- 使用 dotnet watch 开发 ASP.NET Core 应用程序
- Ubuntu 16.04下ASP.NET Core+ MySql + Dapper在 Jexus、nginx 下的简单测试
- SignalR的性能监测与服务器的负载测试
- TypeScript 2.0 正式发布
- ASP.NET Core MVC 配置全局路由前缀
- ASP.NET Core中间件(Middleware)实现WCF SOAP服务端解析
- 自包含 .NET Core应用程序
- Visual Studio 2015 for Linux更好地支持Linux下的开发
- 免费开源的 .NET 分布式组件库 Exceptionless Foundatio
- Peachpie编译器致力于将PHP带入.Net世界
- ASP.NET Core 静态文件及JS包管理器(npm, Bower)的使用
- [RK3288][Android6.0] 移植笔记 --- RT5640 Audio Codec添加
- 基于SignalR的消息推送与二维码描登录实现
- Cactus在jexus上安装
- 与微软.NET创始人Scott Guthrie面对面,“红衣教主”亲身传授推动成功转型的洪荒之力