отсутствует ошибка хранилища времени выполнения в linux with.NET только среда выполнения Core 2.0
Я обновляю некоторые приложения с .NET Core 1.1 до 2.0. Приложения работают нормально локально, но после обновления среды выполнения на моей виртуальной машине linux и развертывания я получаю ошибки:
сборка, указанная в манифесте зависимостей приложения (foo.депс.json) не найден: пакет: 'Майкрософт.Функция 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.Весь пакет.
Я могу установить весь SDK вместо этого и это работает нормально, но я бы предпочел продолжать использовать только во время выполнения.
Как создать кэш времени выполнения вручную, не требуя SDK на рабочем сервере?
5 ответов
обновление 12/4/2017
ASP.NET Core runtime теперь отображается на главной странице загрузки для .NET Core. https://www.microsoft.com/net/download/linux
обновление 10/3/2017
вы также можете установить из пакета корма.
см. эту ссылку для получения инструкций по добавлению каналов пакетов .NET Core для apt, yum, 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 Core runtime store from здесь:
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 выполнимый.
на документация хранилища пакетов среды выполнения, вы можете добавить следующий код :
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
и зависимости будут включены при использовании dotnet publish
.
Я испытал эту проблему, потому что моя версия dotnet SDK была позади Microsoft.AspNetCore.Все пакеты версии. Сопоставление версий (путем возврата пакета или обновления пакета host SDK) исправило мою проблему. Глупая ошибка, но, надеюсь, это кому-то поможет.
для CentOS 7 для меня сработало следующее:
-
Загрузите и установите среду выполнения:
команды mkdir -Р /дома/dotnet ограничителя && как tar zxf dotnet ограничителя-время выполнения-2.0.0-Линукс-х64.смола.gz-C /home/dotnet
-
Загрузите и установите SDK"это должно получить Core магазин ASP.NET папка"
команды mkdir -Р /дома/dotnetSDK && как tar zxf dotnet ограничителя-СДК-2.0.0-Линукс-х64.смола.gz-C / главная/dotnetSDK
-
скопируйте папку хранилища из SDK в среду выполнения:
cp-rp / home/dotnetSDK /store/главная/dotnet / store
-
удалите SDK:
rm-dfr / home / dotnetSDK
-
установите "dotnet" на путь, как описано в официальных документах (ниже не является постоянным):
экспорт 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.
и наконец: Compress / Archive / home / dotnet, чтобы вам не понадобились шаги 2, 3 и 4 в будущих развертываниях того же выпуска-2.0.0.
во время работы машины
sudo yum install aspnetcore-store-2.0.7
внимание! Установите свою версию вместо " 2.0.7" Для меня это работает.