【问题标题】:missing runtime store error on linux with .NET Core 2.0 runtime only仅具有 .NET Core 2.0 运行时的 Linux 上缺少运行时存储错误
【发布时间】:2018-01-24 23:28:40
【问题描述】:

我正在将一些应用程序从 .NET Core 1.1 更新到 2.0。这些应用程序在本地运行良好,但在我的 linux VM 上更新运行时并部署后,我收到错误:

应用程序依赖清单中指定的程序集 (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;aspnetcore-store-2.0.0- win7-x86.xml

我认为这是因为运行时下载不会生成您使用 Microsoft.AspNetCore.All 包时所需的新运行时存储文件夹。

我可以安装整个 SDK,这工作正常,但我更愿意继续只使用运行时。

如何在生产服务器上无需 SDK 手动生成运行时缓存?

【问题讨论】:

    标签: .net linux asp.net-core asp.net-core-2.0


    【解决方案1】:

    在运行时机器

    sudo yum install aspnetcore-store-2.0.7
    

    注意!安装您的版本而不是“2.0.7” 对我来说它有效。

    【讨论】:

      【解决方案2】:

      我遇到了这个问题,因为我的 dotnet SDK 版本落后于 Microsoft.AspNetCore.All 包版本。使版本匹配(通过恢复包或升级主机 SDK)解决了我的问题。犯了愚蠢的错误,但希望它会帮助某人。

      【讨论】:

        【解决方案3】:

        2017 年 12 月 4 日更新

        ASP.NET Core 运行时现在列在 .NET Core 的主下载页面上。 https://www.microsoft.com/net/download/linux

        2017 年 10 月 3 日更新

        您也可以从包源安装。

        有关为 apt、yum、zypper 等添加 .NET Core 包源的说明,请参阅此链接: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 Core 运行时商店:

        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 可执行文件平行。

        【讨论】:

        【解决方案4】:

        根据Runtime package store documentation,您可以将以下内容添加到您的.csproj 文件中:

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

        当您使用dotnet publish 时,依赖项将被包含在内。

        【讨论】:

          【解决方案5】:

          对于 CentOS 7,以下对我有用:

          1. 下载并安装运行时:

            mkdir -p /home/dotnet && tar zxf dotnet-runtime-2.0.0-linux-x64.tar.gz -C /home/dotnet

          2. 下载并安装 SDK“这是获取 Asp.Net Core 存储文件夹的必要条件

            mkdir -p /home/dotnetSDK && tar zxf dotnet-sdk-2.0.0-linux-x64.tar.gz -C /home/dotnetSDK

          3. 将 store 文件夹从 SDK 复制到运行时:

            cp -rp /home/dotnetSDK/store /home/dotnet/store

          4. 移除 SDK:

            rm -dfr /home/dotnetSDK

          5. 按照官方文档中的说明将 'dotnet' 设置为 PATH(以下不是永久性的):

            导出 PATH=$PATH:/home/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.
          

          最后:压缩/归档 /home/dotnet,这样您在相同版本 2.0.0 的未来部署中就不需要步骤 2、3 和 4。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-09-10
            • 1970-01-01
            • 2010-09-05
            • 2010-12-10
            • 1970-01-01
            相关资源
            最近更新 更多