Приложение .netcore-mvc не будет ориентировано на 2.1.3 после принудительного обновления VS до 2.1.4 - PullRequest
0 голосов
/ 21 сентября 2018

Я начал разработку нового веб-сайта до того, как была выпущена базовая платформа .net 2.1.4, мы настроили нашу производственную среду со страницами "Скоро в пути" и т. Д.

Поскольку этот сервер размещает другие сайтыМы не хотим перезапускаться для обновления до 2.1.4, поэтому я обновил файл csproj с помощью

    <RuntimeFrameworkVersion>2.1.3</RuntimeFrameworkVersion>

Я также проверил пакеты NuGet для Microsoft.NETCore.App, и он установлен на 2.1.3

Тем не менее, когда я публикую сайт и копирую его в папку на хосте, он все равно записывает в лог

Не удалось найти какую-либо совместимую версию фреймворка. Указанная фреймворк 'Microsoft.NETCore.App ', версия' 2.1.4 'не найдена.- Проверьте зависимости приложений и укажите версию платформы, установленную по адресу: «PATH» - Установка предварительных условий .NET Core может помочь решить эту проблему: http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409 - Платформу .NET Core и SDK можно установить из: https://aka.ms/dotnet-download - установлены следующие версии: 1.0.4 в [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] 1.1.1 в [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] 2.1.2 в [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App] 2.1.3 в [C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App]

Я в растерянности относительно того, что делать, как я могу изменить этот проект на 2.1.3 вместо 2.1.4 ??

CSProj:

    <Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeFrameworkVersion>2.1.3</RuntimeFrameworkVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.3" />
    <PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
    <PackageReference Include="System.Linq.Dynamic.Core" Version="1.0.8.18" />
  </ItemGroup>

</Project>

СкриншотЗависимости Nuget в VS: Снимок экрана Зависимостей в VS

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

После попытки перехода на более раннюю версию в течение 2 дней я решил остаться и развернуть 2.1.4 на производственном сервере в нерабочее время клиента. Я знаю, что это технически не «ответ», но это был единственный способ, которым я мог решитьпроблема в 4-дневном временном интервале, когда его нужно было развернуть.

0 голосов
/ 21 сентября 2018

Мне кажется странным, единственное, что нам нужно, чтобы изменить версию NetCore в нашем проекте, это изменить csproj между версиями, например, это csproj одного из наших проектов, работающих в 2.1.4:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
    <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="wwwroot\**" />
    <Content Remove="wwwroot\**" />
    <EmbeddedResource Remove="wwwroot\**" />
    <None Remove="wwwroot\**" />
  </ItemGroup>

  <ItemGroup>
    ...
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.4" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="2.1.2" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.4" />
    ...
  </ItemGroup>

  ...

</Project>

И мы можем понизить его до 2.1.3, просто изменив эти две зависимости

    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.3" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.3" />

Я вижу, что мы не используем вашу директиву <RuntimeFrameworkVersion>2.1.3</RuntimeFrameworkVersion>

Я не знаю, может ли это иметь какое-то значение.

С другой стороны, было бы интересно узнать, что заставило вас вернуться назад, поскольку в последнем обновлении нет существенных изменений, иэто очень необходимо, поскольку исправляет уязвимость , которая может привести к DOS.

Поскольку цикл обновления ядра dot net будет в очень короткие периоды временивремя и время простоя очень важны, я также настоятельно рекомендую вам начать использовать Docker, который может позволить вам запускать несколько сред (2.1, 2.1.2 ...) в одном докере.

мымы даже столкнулись с ошибкой в ​​ядре 2.1, поэтому мы запустили отдельный контейнер с единственной функцией в net core 2.0, в то время как наше приложение будет работать на том же сервере, что и наше приложение в 2.1.4

Также убедитесь, чточтобы выполнить чистку и сборку, вы можете попробовать даже удалить папки obj и bin вручную, просто чтобы убедиться, что ничего не вызывает эту ошибку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...