Можно ли безопасно запускать приложение, ориентированное на .net framework 4.7.2, на .net framework 4.7.1?

У меня возникла проблема, из-за которой в настоящее время я ориентируюсь на .NET Framework 4.7.2 в своем решении, но служба веб-приложений Azure поддерживает только .NET Framework 4.7.1. Итак, мой вопрос таков: пока я использую только функции 4.7.1, должна ли она работать без проблем в службе веб-приложений Azure (которая поддерживает только до 4.7.1), даже если я нацелен на 4.7.2? Являются ли платформы .NET Framework обратной совместимостью? До сих пор я не видел никаких проблем. Я просто хочу убедиться, что в будущем не будет осложнений. В идеале я хотел бы продолжать ориентироваться на 4.7.2, чтобы начать использовать функции 4.7.2, как только они станут доступны в службе веб-приложений Azure.


person TheDude    schedule 20.07.2018    source источник
comment
Проверьте список изменений, чтобы узнать, что изменилось…? docs.microsoft.com/en-us/dotnet/ фреймворк/что нового/index#v472   -  person deceze♦    schedule 20.07.2018
comment
Но совместима ли она обратно? Должно ли что-либо, использующее 4.7.1 или предыдущую версию, без проблем работать с 4.7.2?   -  person TheDude    schedule 20.07.2018
comment
@TheDude Ответ находится в примечаниях к выпуску. Если бы были какие-то критические изменения, они бы появились там. В любом случае это точечный выпуск, поэтому он предполагается обратно совместимым.   -  person Panagiotis Kanavos    schedule 20.07.2018
comment
@Panagiotis: Спасибо за ответ. Итак, просто из любопытства, как именно это работает, если вы нацелены на 4.7.2, а доступна только 4.7.1? Нацеливается ли он автоматически на следующую более низкую версию, если 4.7.2 там нет?   -  person TheDude    schedule 20.07.2018
comment
Существует проверка во время выполнения, которая подтверждает, что целевая версия действительно установлена ​​на компьютере. Эта проверка завершится ошибкой, это выглядит так. Хотя Azure вполне может заниматься своими делами. В противном случае очень мало смысла ориентироваться на 4.7.2, это всего лишь отладочная версия, в которой исправлено несколько ошибок, которые могут привести к заметным различиям в поведении программы. Чрезвычайно редко, что это так. Лучше ориентироваться на версию, которую вы фактически тестировали.   -  person Hans Passant    schedule 20.07.2018


Ответы (2)


.NET Framework 4.7.2 основывается на предыдущих версиях .NET Framework 4.x, добавляя множество новых исправлений и несколько новых функций, оставаясь при этом очень стабильным продуктом.

.NET Framework 4.7.2 входит в состав обновления Windows 10 от апреля 2018 г.

.NET Framework 4.7.2 можно использовать для запуска приложений, созданных для .NET Framework 4.0–4.7.1.

Служба приложений Azure теперь поддерживает версию 4.7.2.

Я думаю, что вы хорошо поработали, обновив и нацелившись на .NET Framework 4.7.2; У меня также есть служба приложений Azure, я обновил ее до версии 4.7.2, и она работает очень хорошо. Как было сказано ранее, он содержит обновления и исправления и обратно совместим почти во всех случаях.

Обратите внимание, что рекомендуется, чтобы на целевой машине была версия .Net, равная или выше версии .NET Framework 4.x, чем ваша скомпилированная версия.

См.:
https://docs.microsoft.com/en-us/dotnet/framework/whats-new/index#v472
https://docs.microsoft.com/en-us/dotnet/framework/install/вWindows-10

person Tony    schedule 20.07.2018
comment
Спасибо за ответ. Итак, просто из любопытства, как именно это работает, если вы нацелены на 4.7.2, а доступна только 4.7.1? Нацеливается ли он автоматически на следующую более низкую версию, если 4.7.2 там нет? - person TheDude; 20.07.2018
comment
Целевая машина должна иметь версию .Net, равную или большую версии .NET Framework 4.x, чем ваша скомпилированная версия. - person Tony; 20.07.2018
comment
Спасибо за помощь. Вторая ссылка ответила на мой вопрос. В нем прямо говорится: .NET Framework 4.7.2 может использоваться для запуска приложений, созданных для .NET Framework 4.0–4.7.1. - person TheDude; 20.07.2018
comment
@TheDude ... Как это отвечает на твой вопрос? Вы не пытаетесь запустить 4.7.2, вы пытаетесь запустить 4.7.1. Вы пытаетесь собрать с 4.7.2 и запустить с более ранней версией. - person Dave Newton; 20.07.2018
comment
@Dave: Так есть ли в этом недостатки? Можно ли собрать с 4.7.2 и запустить с более ранней версией? Вот чего я действительно пытаюсь добиться. - person TheDude; 20.07.2018
comment
Действительно что-то любопытное, я проверил¹, и мое приложение службы приложений скомпилировано с 4.7.2, но я проверил на портале Azure, и последняя доступная версия — 4.7.1, но приложение работает нормально, так как я публиковал его более 20 дней. (¹ используя этот stackoverflow.com/a/24149178/194717) - person Tony; 20.07.2018
comment
@TheDude Понятия не имею. Я просто указал, что то, что вы цитируете, противоположно тому, что вы спрашиваете. - person Dave Newton; 20.07.2018
comment
Существует некоторая путаница, возможно, какая-то недокументированная функция, которая позволяет запускать службу приложений, скомпилированную с 4.7.2, для запуска на 4.7.1 в Azure. - person Tony; 20.07.2018
comment
Ни один из моих сервисов приложений не поддерживает 4.7.2. У них работает 4.7.1. Проверьте свою версию по ссылке ниже, но я очень сомневаюсь, что это 4.7.2. Время выполнения по умолчанию для приложения 4.7.2 часто равно 4.5, но это не означает, что ваше приложение обязательно будет работать. Например, есть некоторые проблемы с версиями в версии 4.7.1 как во время выполнения, так и в версии сборки. blogs.msdn.microsoft.com/waws/2016/11/02/ - person Dean Swiatek; 24.09.2018

@TheDude, вы не можете создать приложение на 4.7.2 и надеяться запустить его на более ранней версии, например 4.7.1. Во время выполнения проверка версии целевой платформы завершится ошибкой, поскольку она обнаружит, что версия платформы (4.7.2) отсутствует.

Обратный путь (т. е. цель 4.7.1 и запуск на 4.7.2) в порядке, поскольку более высокие версии обратно совместимы.

person Vivek Mishra    schedule 25.07.2018
comment
Дэвид Дебо из Microsoft сказал, что все должно быть в порядке: github.com/ Azure/app-service-announcements-discussions/issues/ - person TheDude; 26.07.2018
comment
Я считаю, что время выполнения по умолчанию — 4.5 для приложения 4.7.2, поэтому оно может работать, но не всегда. - person Dean Swiatek; 24.09.2018