自包含 .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应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 免费开源的 .NET 分布式组件库 Ex
- 下一篇: ASP.NET Core中间件(Midd