Приложение Asp.NET MVC построено на платформе .net версии 4.5, я хочу запустить приложение на платформе .net выше, то есть 4.7.2 - PullRequest
0 голосов
/ 05 сентября 2018

Можете ли вы помочь мне по следующему запросу? Приложение Asp.NET MVC построено на платформе .net Framework версии 4.5. Я хочу запустить это приложение на более поздней версии .Net Framework версии 4.7.2.

Будет ли это работать, если я изменю версию только в файле web.config? Или мне нужно собрать приложение с более высокой версией в Visual Studio?

Заранее спасибо.

Ответы [ 2 ]

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

Целевая структура

Помимо CLR, который напрямую связан со средой выполнения, targetFramework сообщит .NET, какие сборки должны быть нацелены.

<compilation targetFramework="4.x.x"/>

Выбор версии эталонных сборок .NET Framework. используется при выполнении компиляции. (Примечание: Visual Studio требует, чтобы этот элемент присутствует в Web.config, даже если мы автоматически выводим его.)

<httpRuntime targetFramework="4.x.x"/>

Это было сделано для того, чтобы делать то, что вы хотите: выбор поведения 4.7 с разработанным приложением 4.5. Обратите внимание, что у вас может быть какое-то поведение, это не волшебство :) (даже если в вашем случае с 4.5 по 4.7 не будет проблем ИМХО).

Эффект этого атрибута двоякий. Во-первых, он управляет поведением режима причуд CLR, как элемент <supportedRuntime> в консольном приложении. Во-вторых, <httpRuntime targetFramework="4.5" /> - это ярлык, который позволяет среде исполнения ASP.NET выводить широкий спектр параметров конфигурации.

Чек https://blogs.msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/

Сборочный переплет

В web.config также имеется монтажная привязка , предназначенная для привязки ряда сборочных версий к конкретной версии.

Дело в том, что сборки .NET Framework (не .NET Core) основаны на версии CLR. Насколько я знаю, все сборки, включенные в фреймворк (не сателлиты, подобные MVC), будут 4.0.0.0. Таким образом, вы не можете привязать сборку 4.x Framework к 4.7 framework, поскольку они будут иметь одинаковую версию сборки.

Но вы можете связать свою внешнюю (NuGet) зависимость.

В любом случае , за исключением случаев, когда у вас разные конфигурации веб-серверов с разными установленными платформами, самый простой способ - перекомпилировать ваше приложение, изменив целевую среду в свойствах проекта Visual Studio, как уже было сказано.

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

Я бы настоятельно рекомендовал внести изменения в свойства PROJECT в Visual Studio (в обозревателе решений щелкните правой кнопкой мыши Project | Properties | Target Framework (раскрывающийся список);

Если вы посмотрите на разметку файла проекта (.csproj), то увидите там целевую платформу, на которую ссылаются (в результате настроек вашего проекта). Фрагмент кода из файла * .csproj, нацеленного на 4.6.1, здесь:

    **<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>**
<MvcBuildViews>false</MvcBuildViews>
<UseIISExpress>false</UseIISExpress>

Внесение изменения в web.config, AFAIK, может / не может повлиять на это значение (и, следовательно, на любые сгенерированные сборки) каким-либо образом.

...