Приложение Asp.NET MVC создано с помощью .net framework версии 4.5, я хочу запустить приложение на более высокой платформе .net 4.7.2.

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

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

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


person MarsRoverII    schedule 05.09.2018    source источник
comment
Вы можете изменить версию фреймворка в настройках проекта. Щелкните правой кнопкой мыши проект, нажмите «Настройки», чтобы перейти на вкладку «Приложение», и вы можете выбрать там структуру.   -  person Natassia Tavares    schedule 05.09.2018


Ответы (2)


Целевая платформа

Помимо среды 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, как уже было сказано.

person JoeBilly    schedule 05.09.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 могло бы/не могло бы, насколько мне известно, повлиять на это значение (и, следовательно, на любые сгенерированные сборки) каким-либо образом.

person markaaronky    schedule 05.09.2018