首页 文章

仅在.NET Core 2.0运行时的Linux上缺少运行时存储库错误

提问于
浏览
9

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

找不到应用程序依赖项清单(foo.deps.json)中指定的程序集:package:'Microsoft.ApplicationInsights.AspNetCore',version:'2.1.1'path:'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的情况下手动生成运行时缓存?

5 回答

  • 2

    Update 12/4/2017

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

    Update 10/3/2017

    您也可以从包源安装 .

    有关为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
    

    Original answer

    您可以从此处仅下载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可执行文件并行 .

  • 0

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

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

    当您使用 dotnet publish 时,将包含依赖项 .

  • 8

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

  • 2

    对于CentOS 7,以下内容适用于我:

    • 下载并安装运行时:

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

    • 下载并安装SDK“ This is a MUST to get Asp.Net Core store folder

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

    • 将商店文件夹从SDK复制到运行时:

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

    • 删除SDK:

    rm -dfr / home / dotnetSDK

    • 将'dotnet'设置为PATH,如官方文档中所述(以下不是永久性的):

    export 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.
    

    Finally: 压缩/存档/ home / dotnet,以便在将来的部署中不需要步骤2,3和4 of same release-2.0.0 .

  • 0

    在运行时机器上

    sudo yum install aspnetcore-store-2.0.7
    

    注意!安装你的版本而不是“2.0.7”对我来说它的工作原理 .

相关问题