缺少Linux运行时存储错误,仅使用.NET Core 2.0运行时
我正在将一些应用程序从.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的情况下手动生成运行时缓存?
更新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可执行文件并行。
为CentOS 7,以下为我工作:
-
下载并安装运行时:
的mkdir -p /家庭/ DOTNET & &焦油ZXF DOTNET运行时,2.0.0- Linux的x64.tar.gz -C /家庭/ DOTNET
-
下载并安装SDK “这是一个必须得到Asp.Net核心存储文件夹”
mkdir -p/home/dotnetSDK & & tar zxf dotnet-sdk-2.0.0-linux-x64.tar。GZ -C /家庭/ dotnetSDK
-
复制从SDK到运行时的存储文件夹:
CP -rp /家庭/ dotnetSDK /存储/家庭/ DOTNET /存储
-
删除SDK :在官方的文档解释
RM -dfr /家庭/ dotnetSDK
-
集 '的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。
每Runtime package store documentation,你可以添加以下到您的.csproj
文件:
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
,当你使用dotnet publish
的依赖将被包括在内。
我遇到过这个问题,因为我的dotnet SDK版本落后于Microsoft.AspNetCore.All软件包版本。使版本匹配(通过恢复软件包或升级主机SDK)可以解决我的问题。愚蠢的错误,但希望它会帮助某人。
谢谢。我没有找到任何有关这方面的文件。将它添加到运行时下载页面以及https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction中是有意义的。如果将运行时商店设置合并到dotnet-install.sh –
是的,我会联系我们的文档团队以改进此操作。 – natemcmaster