我正在将一些应用程序从.NET Core 1.1更新到2.0。应用程序在本地运行良好,但在我的Linux VM上更新Runtime并进行部署后,我收到错误:
应用程序依赖项清单中指定的程序集 (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的情况下手动生成运行时缓存?
答案 0 :(得分:8)
更新12/4/2017
ASP.NET Core运行时现在列在.NET Core的主要下载页面上。 https://www.microsoft.com/net/download/linux
更新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
原始回答
您可以从此处下载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可执行文件并行。
答案 1 :(得分:2)
根据Runtime package store documentation,您可以将以下内容添加到.csproj
文件中:
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
,当您使用dotnet publish
时,将包含依赖项。
答案 2 :(得分:2)
我遇到过这个问题,因为我的dotnet SDK版本落后于Microsoft.AspNetCore.All包版本。使版本匹配(通过还原包或升级主机SDK)修复了我的问题。愚蠢的错误,但希望它会帮助某人。
答案 3 :(得分:0)
对于CentOS 7,以下内容对我有用:
下载并安装运行时:
mkdir -p / home / dotnet&amp;&amp; tar zxf dotnet-runtime-2.0.0-linux-x64.tar.gz -C / home / dotnet
下载并安装SDK“这必须获取Asp.Net Core存储文件夹”
mkdir -p / home / dotnetSDK&amp;&amp; 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.
最后:压缩/存档/家庭/ dotnet,这样您就不需要步骤2,3和&amp; 4在未来的部署相同版本2.0.0 。
答案 4 :(得分:0)
在运行时机器
sudo yum install aspnetcore-store-2.0.7
请注意!安装您的版本而不是&#34; 2.0.7&#34; 对我来说它有效。