我應該安裝什麼包來執行已部署的 .Net Core 應用程序?
我正在建構一個 .Net Core API,它將託管在基於 Ubuntu 的伺服器上。我正在伺服器上安裝我需要的包,即 MySQL 和 Nginx,但我當然還需要安裝 .Net Core 才能執行應用程序。
我找到了一個關於如何設置和配置 Nginx 以與 Kestrel 伺服器一起使用的教程範例,但它完全假設您已經在將要部署它的機器上安裝了 .Net Core。
.Net Core 網站似乎只指示您安裝 SDK,但這是用於部署,而不是開發,因此安裝 .Net Core 執行時是有意義的,但是在
apt-cache search dotnet
查找特定包名稱時,我發現dotnet-hosting-2.0.0
也列出了使用“Microsoft .NET Core 2.0.0 Linux Server Hosting”描述的內容。總結一下,我的問題就是這個。要託管 .Net Core 應用程序,您是否使用.Net Core 應用程序部署包
dotnet-hosting
或dotnet-runtime
包?
經過進一步研究,我發現
dotnet-hosting
包結合了dotnet-runtime
和aspnetcore-store
包。通過此 Github 評論驗證。執行時和執行時儲存被打包到“Linux Server Hosting”安裝程序中,包名為
dotnet-hosting-2.0.0
。
aspnetcore-store
現在預設情況下是已發布的 ASP.Net Core 應用程序的必需依賴項。預設情況下,ASP.NET 應用程序的發布依賴於執行時儲存。
所以要直接回答我的問題,
dotnet-hosting-x.x.x
應該在部署 ASP.Net Core 應用程序時安裝。這也將消除aspnetcore-store
未隨dotnet-runtime
包一起安裝時的以下錯誤。
Error: An assembly specified in the application dependencies manifest (APIproject.deps.json) was not found: package: 'Microsoft.ApplicationInsights.AspNetCore', version: '2.1.1' path: 'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll' This assembly was expected to be in the local runtime store as the application was published using the following target manifest files: aspnetcore-store-2.0.0-linux-x64.xml;aspnetcore-store-2.0.0-osx-x64.xml;aspnetcore-store-2.0.0-win7-x64.xml;aspnetcore-store-2.0.0-win7-x86.xml
我已經用我的應用程序在 Ubuntu 16.04 上自己測試了這個包,它執行良好。