2017-08-16 63 views
8

我正在將一些應用程序從.NET Core 1.1更新到2.0。這些應用做工精細本地,但是,我的Linux更新運行VM和部署後,我收到錯誤:缺少Linux運行時存儲錯誤,僅使用.NET Core 2.0運行時

在應用程序依賴清單 (foo.deps.json)指定的組件沒有被發現: 包:'Microsoft.ApplicationInsights.AspNetCore',版本:'2.1.1' 路徑:'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll'
此程序集預計位於本地運行時存儲爲 應用程序是使用以下目標清單文件發佈的: aspnetcore-store-2.0.0-linux-x64.xml; aspnetcore-store-2.0.0-osx-x64.xml; aspnetcore-store-2.0.0-win7-x64 .XML; aspnetco re-store-2.0.0-win7-x86.xml

我認爲這是因爲運行時下載不會生成使用Microsoft.AspNetCore.All軟件包時所需的新運行時存儲文件夾。

我可以安裝整個SDK,而且工作正常,但我寧願繼續只使用運行時。

如何在不需要生產服務器上的SDK的情況下手動生成運行時緩存?

回答

5

更新2017年12月4日

ASP.NET的核心運行時是現在上市的.NET核心主下載頁上。 https://www.microsoft.com/net/download/linux

更新2017年10月3日

您也可以從包裝輸入安裝。

有關添加了.NET Core包這個鏈接,說明飼料的貼切,百勝,zypper的,和其他人:https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-download.md#installing-net-core-on-linux

例如,如果你想安裝在Ubuntu上16,你可以這樣做:

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 update 
sudo apt install aspnetcore-store-2.0.0 

原來的答覆

你可以從這裏下載只是ASP.NET運行時的核心店:

https://dist.asp.net/runtimestore/2.0.0/linux-x64/aspnetcore.runtimestore.tar.gz

您還需要下載.NET Core 2.0.0運行時(請參閱https://github.com/dotnet/core/blob/master/release-notes/download-archives/2.0.0-download.md)。

將這兩個文件解壓縮到同一個文件夾中,即運行時存儲歸檔文件中的「store」和「additionalDeps」文件夾應該與dotnet可執行文件並行。

+0

謝謝。我沒有找到任何有關這方面的文件。將它添加到運行時下載頁面以及https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction中是有意義的。如果將運行時商店設置合併到dotnet-install.sh –

+0

是的,我會聯繫我們的文檔團隊以改進此操作。 – natemcmaster

0

爲CentOS 7,以下爲我工作:

  1. 下載並安裝運行時:

    的mkdir -p /家庭/ DOTNET & &焦油ZXF DOTNET運行時,2.0.0- Linux的x64.tar.gz -C /家庭/ DOTNET

  2. 下載並安裝SDK 「這是一個必須得到Asp.Net核心存儲文件夾

    mkdir -p/home/dotnetSDK & & tar zxf dotnet-sdk-2.0.0-linux-x64.tar。GZ -C /家庭/ dotnetSDK

  3. 複製從SDK到運行時的存儲文件夾:

    CP -rp /家庭/ dotnetSDK /存儲/家庭/ DOTNET /存儲

  4. 刪除SDK :在官方的文檔解釋

    RM -dfr /家庭/ dotnetSDK

  5. 集 '的dotnet' 到PATH(下面是不是永久性的):

    出口PATH = $ PATH:/家庭/ DOTNET

現在可以測試並確認其工作:

# dotnet WebApiTest.dll 
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0] 
     User profile is available. Using '/root/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. 
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[58] 
     Creating key {87d17c5a-120f-4204-b316-52027a264791} with creation date 2017-08-17 16:34:49Z, activation date 2017-08-17 16:34:49Z, and expiration date 2017-11-15 16:34:49Z. 
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35] 
     No XML encryptor configured. Key {87d17c5a-120f-4204-b316-52027a264791} may be persisted to storage in unencrypted form. 
info: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[39] 
     Writing data to file '/root/.aspnet/DataProtection-Keys/key-87d17c5a-120f-4204-b316-52027a264791.xml'. 
Hosting environment: Production 
Content root path: /home/dotnet/WebApiTest 
Now listening on: http://localhost:5000 
Application started. Press Ctrl+C to shut down. 

最後:壓縮/存檔/家庭/ DOTNET讓你贏在未來部署相同版本2.0.0需要步驟2,4。

1

Runtime package store documentation,你可以添加以下到您的.csproj文件:

<PropertyGroup> 
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest> 
</PropertyGroup> 

,當你使用dotnet publish的依賴將被包括在內。

0

我遇到過這個問題,因爲我的dotnet SDK版本落後於Microsoft.AspNetCore.All軟件包版本。使版本匹配(通過恢復軟件包或升級主機SDK)可以解決我的問題。愚蠢的錯誤,但希望它會幫助某人。