首页 > 业界 > 独立的.NET Core应用程序
2016
09-20

独立的.NET Core应用程序

  英文原文:Self-contained .NET Core Applications

  提醒您 .NET 是完全开源的,而且 .NET Core 是一个您可以免费下载的开源与跨平台 framework。您可以到 http://dot.net 取得它在 Mac、Windows 与大多数的 Unix 系统。顺带可以使用免费、跨平台的 Visual Studio Code,而您就可以随时随地撰写 C# 与 F#。

  有两个方式来部署一个 .NET Core 应用程序,FDD 与 SCD。三个字的缩写可能看不懂,它们的意思是 Framework-dependent 与 Self-contained。当 .NET Core 安装在 Windows 中,它会存放在 C:Program Filesdotnet。在「shared」资料夹内会有一堆可以分享的 .NET 档桉。这里可以有多个资料夹,就如同下图,您可以看到我的资料夹。您可以有多个 .NET Core 的安装。

  当您安装您的应用程序与它的 dependencies 而并非 .NET Core 本身,这时您就会需要 .NET Core 已经被安装在目标的机器上。对于 Web App 或有很多应用程序的系统来说并没有什么问题,但如果我想要写一个应用程序,而且只用一个 zip 档给你或在随身碟上,而我就想要它能运作。我将会包含 .NET Core 在其中,而整个东西就是 Self Contained 部署。

  而这样将会使我的「Hello World」应用程序变得大于我使用现存的 system-wide 安装,但我知道它就是可以 Work,因为它将会是完全独立的。

独立的.NET Core应用程序 - 同创卓越 - 1

  如果我以 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 个资料夹,并准备好部署到任何我想要的系统。

独立的.NET Core应用程序 - 同创卓越 - 2

  您可以在 Win10 资料夹看到我的「MYAPPLICATION.exe」(我的叫做 scd.exe)可以直接执行,而并非像开发者那样用「dotnet run」来执行。

独立的.NET Core应用程序 - 同创卓越 - 3

  在 .NET Core Docs 里有许多不错的文章,教您如何调整与精准地定义要为您的 self contained 应用程序部署什么。您可以对.NET Core 做大量的修整,而有人说那将会变得越来越自动化在未来,有可能下到方法等级。

最后编辑:
作者:同创卓越
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。