Зачем приложению вдруг нужна версия "2.1.6"?Приложение не изменилось, и два месяца назад версия "2.1.6" даже не существовала.
Это легко объяснить.Более новые шаблоны ASP.NET Core 2.1 (и более поздние версии) создаются с неявным управлением версиями для Microsoft.AspNetCore.All
/ Microsofot.AspNetCore.App
пакетов.
В ASP.NET Core 2.1 илипозже вы можете указать ссылку на пакет Microsoft.AspNetCore.All без версии.Если версия не указана, SDK указывает неявную версию (Microsoft.NET.Sdk.Web).Мы рекомендуем полагаться на неявную версию, указанную в SDK, и не устанавливать явно номер версии в ссылке на пакет.Если у вас есть вопросы об этом подходе, оставьте комментарий GitHub в разделе «Обсуждение» для неявной версии Microsoft.AspNetCore.App.
Ваши записи в csproj будут выглядеть так:
<PackageReference Include="Microsoft.AspNetCore.All" />
вместо
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.4" />
Это гарантирует, что каждая перестройка будет использовать / подбирать последние второстепенные пакеты , доступные в системе.Это относится к портативным приложениям.Автономные в основном делают то же самое, но со временем выполнения, доступным во время публикации.
Это то, что вызывает у вас проблему в первую очередь.
Почему новейшая версия недоступна в обычном контейнере "2.1-aspnetcore-runtime"?
Вы, вероятно, не запускали docker pull microsoft/dotnet:2.1-aspnetcore-runtime
до создания / сборки (или запуска) вашего докер-контейнера.
Если вы этого не сделаете, он будет использовать последняя локально помеченная версия (но не самая последняя версия, доступная для этого тега в докере-концентраторе), потому что microsoft/dotnet:2.1-aspnetcore-runtime
будет указывать на более новые минорные версии, когда они выйдут, но для этого требуется, чтобы вы сделали новую попыткуполучить самую последнюю версию (повторно) помеченного изображения.