(Для моего ответа я предполагаю, что вы создаете зависимое от фреймворка приложение, а не отдельное приложение.)
Вы не можете установить 2.1.3
напрямую как <TargetFramework>
в .csproj
, потому что отличается только версия патча.
Разрешены только следующие записи: https://docs.microsoft.com/en-us/dotnet/standard/frameworks
Так что в вашем случае .csproj
должен иметь <TargetFramework>netcoreapp2.1</TargetFramework>
.
Но, как отметил Дамир в комментарии, вы можете принудительно установить версию, если добавите <RuntimeFrameworkVersion>2.1.3</RuntimeFrameworkVersion>
к <PropertyGroup>
.
Вы можете проверить эффект этого изменения, если откроете диалоговое окно «Управление пакетами NuGet» и посмотрите на версию метапакета Microsoft.NETCore.App
, которая неявно используется.
Без <RuntimeFrameworkVersion>
это 2.1.0
, иначе должно быть 2.1.3
.
Но кроме этого, иногда есть и другие факторы, которые неявно определяют используемую версию.
Например, если вы хотите создать автономное приложение, вы должны указать <RuntimeIdentifier>
, который также заставит версию платформы 2.1.3
, потому что он опубликует самое большое время выполнения патча на Ваша машина автоматически.
Тем не менее, я бы не рекомендовал устанавливать какие-либо <RuntimeFrameworkVersion>
вручную по большей части.
Начиная с .NET Core 2.1 все зависящие от фреймворка приложения (созданные с использованием .NET Core 2.0 или более поздней версии) автоматически откатятся до последней установленной версии minor если исходная версия среды выполнения отсутствует в системе.
Таким образом, если в целевой системе установлен только .NET Core 2.1.3, ваше зависящее от фреймворка приложение .NET Core 2.1.0 автоматически использует эти среду выполнения и фреймворк.
Подробнее о механизме выбора версии .NET Core вы можете прочитать здесь .