自包含 .NET Core应用程序
? .NET 是完全開(kāi)源的,而且 .NET Core 是一個(gè)您可以免費(fèi)下載的開(kāi)源與跨平臺(tái) framework。您可以到?http://dot.net?獲取?Mac、Windows 與大多數(shù)的 Unix 系統(tǒng)的版本。還可以使用免費(fèi)、跨平臺(tái)的?Visual Studio Code,用VS code您就可以隨時(shí)隨地編寫 C# 與 F#。
有兩種方式來(lái)部署一個(gè) .NET Core 應(yīng)用程序,FDD 與 SCD。三個(gè)字的縮寫可能看不懂,它們的意思是 Framework-dependent 與 Self-contained。當(dāng) .NET Core 安裝在 Windows 中,它會(huì)存放在 C:\Program Files\dotnet。在「shared」文件夾內(nèi)會(huì)有一堆可以共享的 .NET 程序集。這里可以有多個(gè)文件夾,就如同下圖,您可以看到我的文件夾。您也可以安裝多個(gè) .NET Core 的不同版本。
當(dāng)您安裝您的應(yīng)用程序與它的 dependencies 而并非 .NET Core 本身,這時(shí)您就會(huì)需要 .NET Core 已經(jīng)被安裝在目標(biāo)的機(jī)器上。對(duì)于 Web App 或有很多應(yīng)用程序的系統(tǒng)來(lái)說(shuō)并沒(méi)有什么問(wèn)題,但如果我想要寫一個(gè)應(yīng)用程序,而且只用一個(gè) zip 壓縮包給你或在u盤上,而我就想要它能運(yùn)行。我將會(huì)包含 .NET Core 在其中,而整個(gè)應(yīng)用就是 Self Contained 部署。
而這樣將會(huì)使我的「Hello World」應(yīng)用程序變得大于我使用現(xiàn)存的 system-wide 安裝,但我知道它就是可以 Work,因?yàn)樗鼘?huì)是完全獨(dú)立的。
如果我以 self-contained 的方式來(lái)部署我的應(yīng)用程序,有一點(diǎn)很重要的是,我將會(huì)有責(zé)任要維護(hù) .NET Core 并讓它保持在最新的版本。我還需要提前決定我的目標(biāo)平臺(tái)。如果我想要讓它在 Windows、Mac 與 Linux 上執(zhí)行成功,我將需要囊括那些目標(biāo)平臺(tái)并為它們構(gòu)建部署套裝。這些大多都很直觀,不過(guò)還是知道一下比較好。
我將拿我的小小應(yīng)用程序(我只是用一個(gè)「dotnet new」的應(yīng)用程序)并在文本編輯器中修改 project.json。
我的應(yīng)用程序是一個(gè) .NETCore.App,但它將不會(huì)使用已經(jīng)安裝的 .NET Core 平臺(tái)。它將使用本地版本,所以我從這個(gè) dependency 刪除「type=’platform’」。
"frameworks": {?"netcoreapp1.0": { ?
?"dependencies": { ?
? ?"Microsoft.NETCore.App": { ?
? ? ?"version": "1.0.1"}}} }
接下來(lái)我寫了一個(gè) runtimes 的部分來(lái)指定我想要針對(duì)哪些平臺(tái)。而這里有一個(gè)全部 Runtime ID 的清單。
"runtimes": { ? ?"win10-x64": {}, ? ?
"osx.10.10-x64": {},
"ubuntu.14.04-x64": {}}
在執(zhí)行「dotnet restore」您會(huì)想要像這樣構(gòu)建:
dotnet build -r win10-x64 dotnet build -r osx.10.10-x64 dotnet build -r ubuntu.14.04-x64然后發(fā)布版本在您測(cè)試之后。
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一旦這個(gè)完成,我就有了我的應(yīng)用程序獨(dú)立在 n 個(gè)文件夾,并準(zhǔn)備好部署到任何我想要的系統(tǒng)。
您可以在 Win10 文件夾看到我的「MYAPPLICATION.exe」(我的叫做 scd.exe)可以直接執(zhí)行,而并非像開(kāi)發(fā)者那樣用「dotnet run」來(lái)執(zhí)行。
在?.NET Core Docs?里有許多不錯(cuò)的文章,教您如何調(diào)整與精準(zhǔn)地定義要為您的 self contained 應(yīng)用程序部署什么。您可以對(duì).NET Core?做大量的修整,而有人說(shuō)那將會(huì)變得越來(lái)越自動(dòng)化在未來(lái),有可能下到方法等級(jí)。
原文地址:https://blogs.msdn.microsoft.com/msdntaiwan/2016/09/20/selfcontainednetcoreapplications/
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的自包含 .NET Core应用程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 免费开源的 .NET 分布式组件库 Ex
- 下一篇: ASP.NET Core中间件(Midd