在開發階段,都是直接安裝.Net Core的SDK,但是在部署的時候你還是直接裝SDK嗎?當然直接裝SDK也沒什麼問題,也可以少一些麻煩。但是如果你像我一樣不喜歡在產線上裝SDK,只想裝Runtime,那麼這篇文章可能會對你有幫助。這裡我們談的都是針對攜帶型發佈的應用程式。 ...
在開發階段,都是直接安裝.Net Core的SDK,但是在部署的時候你還是直接裝SDK嗎?當然直接裝SDK也沒什麼問題,也可以少一些麻煩。但是如果你像我一樣不喜歡在產線上裝SDK,只想裝Runtime,那麼這篇文章可能會對你有幫助。這裡我們談的都是針對攜帶型發佈的應用程式。
.Net 下載中心
https://www.microsoft.com/net/download/all
你可以在這裡下載所有.Net相關的運行時或者SDK。這裡我們主要看看.Net Core。
.Net Core應用程式
如使用攜帶型發佈的,那發佈的程式中不會包含.Net Core運行時,在部署到伺服器的時候就需要安裝對應的.Net Core運行時。可直接按照官方的文檔,使用包管理器來安裝。
例如:Linux Ubuntu 16.04
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list' sudo apt-get install apt-transport-https sudo apt-get update sudo apt-get install dotnet-runtime-2.0.6
這樣你的程式就可以正常運行了。
ASP.Net Core應用程式
如果你的是ASP.Net Core應用程式,你會發現使用上述方式安裝了.net core運行時之後,你的程式還是無法正常運行。會出現大概類似下麵這樣的錯誤:
Error: An assembly specified in the application dependencies manifest (ZKEACMS.WebHost.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
這是因為只安裝了.Net Core運行時,而沒有安裝ASP.NET Core運行時。
當然,你也可以在發佈的時候帶上它:
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
或者直接在運行時裡面補上它就可以了。下載它,然後解壓到dotnet的安裝目錄
wget -O aspnetcore-store.tar.gz https://download.microsoft.com/download/8/D/A/8DA04DA7-565B-4372-BBCE-D44C7809A467/aspnetcore-store-2.0.6-linux-x64.tar.gz tar zxf aspnetcore-store.tar.gz -C /usr/share/dotnet
然後你就可以運行你的程式了。
Server Hosting
微軟已經為你打包好了.Net Core Runtime和ASP.Net Core Runtime,可以不用先裝.Net Core Runtime再裝ASP.Net Core Runtime,直接下載就可以使用了:
mkdir dotnet wget -O https://download.microsoft.com/download/8/D/A/8DA04DA7-565B-4372-BBCE-D44C7809A467/dotnet-hosting-2.0.6-linux-x64.tar.gz tar zxf aspnetcore-store.tar.gz -C dotnet
Windows比較簡單,直接安裝Windows Server Hosting就可以了。
不過,為什麼不可以通過包管理工具,直接安裝.Net Core Runtime和ASP.Net Core Runtime呢?
原文鏈接:http://www.zkea.net/codesnippet/detail/post-98