Asp net mvc 4 runtime что это
Введение в новые возможности ASP.NET MVC 4
В этой статье дается описание новых возможностей веб-фреймворка ASP.NET MVC 4, представленных в первой Developer Preview версии.
Мобильный веб
Одним из самых устойчивых и набирающих силу трендов в современной разработке является тренд мобильного веба. Иметь мобильную версию сайта – это уже не просто предложение удобного доступа для некоторых пользователей, но средство зарабатывания денег и расширения аудитории.
Именно поэтому в ASP.NET MVC 4 большой упор сделан на предоставление специальных возможностей разработчику, который желает сделать мобильную версию сайта.
Мобильный сайт – два подхода
Шаблон мобильного сайта
В ASP.NET MVC 4 был добавлен новый специальный шаблон проекта для мобильного сайта, вы можете воспользоваться им для создания отдельной версии сайта, которая будет работать на мобильных устройствах (рисунок 1).
Рис.1. Новый шаблон мобильного сайта
После создания проекта на базе нового шаблона и его запуска вы можете увидеть характерное мобильное представление в браузере (рисунок 2).
Рис. 2. Представление мобильного сайта
При это весь функционал стандартного шаблона по-прежнему доступен: авторизация, демонстрационные страницы, валидация на ошибки. Интерфейс нового представления базируется на JavaScript-библиотеке jQuery Mobile, которая теперь входит в состав ASP.NET MVC.
Используя новый шаблон вы можете легко создать отдельный мобильный вариант для своего сайта.
Адаптивная разметка и новый шаблон по умолчанию
Вторым вариантом создания мобильной версии сайта является использование адаптивной разметки, которая меняет представление в зависимости от разрешения экрана. В ASP.NET MVC 4 был обновлен стандартный шаблон веб-приложения по умолчанию, который уже использует адаптивную верстку (рисунок 3).
Рис. 3. Новый шаблон приложения по умолчанию
Кроме обновленного внешнего вида, который стал более привлекательным в шаблоне был использован подход адаптивного рендеринга. Идея адаптивного рендеринга заключается в следующем: по мере изменения разрешения, внешний вид страницы подстраивается под свободное пространство, отображая только те элементы, которые имеют смысл (рисунок 5).
Рис. 5. Адаптивная разметка
Обратите внимание на эти изображения. При уменьшении разрешения разметка подстраивается под новые параметры экрана и, например, скрывает излишние элементы оформления, изменяет расположение элементов и ключевых пунктов меню. При низких разрешениях, разметка формируется таким образом, чтобы важный контент занимал всю полезную площадь доступную для отображения.
Адаптивная разметка в проекте ASP.NET MVC 4 базируется на новых стандартах HTML5 и CSS3 в частности на стандарте CSS3 Media Queries, который позволяет определить различные правила CSS для определенных условий, например, разных разрешений. Вот как это работает: в файле определения стилей Site.css вы можете обнаружить следующий код:
Конструкция media определяет правило которое будет использовать вложенную разметку при выполнении условия. В данном случае, условием служит использование дисплеев и размер отображаемого окна до 850 пикселей. Используя подобный механизм и задавая правила вы можете очень гибко реагировать на различные условия отображения вашего сайта. Кроме того, в файле компоновки _Layout.cshtml определен мета-тег:
который подсказывает браузеру необходимость правильно подгонять контент под ширину экрана.
Кроме адаптивной разметки в обновленном шаблоне приложения используются другие новые стандарты, например градиенты CSS Gradients.
Еще одним изменением в шаблоне веб-приложения стало внедрение поддержки оконных форм для представлений логина и регистрации (рисунок 6).
Рис. 6. Окно формы регистрации
Данный функционал примечателен тем, что при поддержки сценариев браузером предлагает пользователю воспользоваться формой в виде всплывающего окна, а при отсутствии сценариев – автоматически переводит пользователя на отдельную страницу форы регистрации (рисунок 7).
Рис. 7. Отдельная страница формы регистрации
Данный функционал реализован с помощью нового файла скриптов AjaxLogin.js, включенного в проект. Сами окна форм построены на функционале библиотеки jQuery UI, которая включена в проект по умолчанию.
Режимы отображения
Ранее мы говорили только о изменениях в шаблонах проектов. Помимо этих нововведений в ASP.NET MVС 4 был добавлен новый функционал на уровне самого фреймворка, предназначенный для упрощения работы сайта с мобильными устройствами.
Новая функция режимов отображения (Display Modes) позволяет приложению выбирать представления основываясь на типе браузера, который запросил страницу. Например, если десктопный браузер запрашивает страницу Home, то веб-приложение может вернуть обычное представление Index, которое формируется на базе шаблона Views\Home\Index.cshtml. По запросу от браузера, сайт сможет вернуть специальное мобильное представление на базе шаблона Views\Home\Index.mobile.cshtml.
Этот функционал работает автоматически, достаточно определить дополнительный шаблон с постфиксом *.mobile.cshtml и он будет использован для мобильных клиентов. Точно так же можно определить мобильную версию _Layout.cshtml — _Layout.mobile.cshtml и мобильные версии частичных представлений: _MyPartial.cshtml — _MyPartial.mobile.cshtml.
Прелесть и мощь нового функционала кроется в возможности расширения и точной настройки под конкретные мобильные устройства, мобильные ОС, любые другие условия. Вы можете зарегистрировать свой экземпляр DefaultDisplayMode, указав имя, которое будет использовано в названии представления и условие, согласно которому это представление будет отбираться.
Например, вы можете добавить следующий код в Application_Start в файле Global.asax:
Этот код определяет новый тип представления “iPhone” и указывает на условие, когда такое представление нужно использовать: когда строка агента клиента пользователя содержит строку “iPhone”, что указывает на использование мобильного телефона iPhone пользователем. При выполнении этого условия будет использоваться представление Views\Shared\_Layout.iPhone.cshtml.
Вы можете построить гораздо более сложное условие для определения того, какое именно представление необходимо использовать для конкретного запроса. Теперь становится гораздо проще кастомизировать свой сайт для разных устройств и мобильных операционных систем.
Переключение режимов отображения
Полезной возможностью мобильного сайта является возможность переключения на стандартное десктопное представление, в тех случаях, когда пользователю не хватает функционала мобильного сайта. Порой может возникнуть другая ситуация, когда пользователь предпочтет работать в мобильной версии вместо стандартной.
Для обеспечения такой функции в ASP.NET MVC 4 был введен новый механизм получения информации о текущем контексте запроса: стандартный ли он либо переопределенный. Теперь свойство HttpContext содержит ряд новых методов:
Рецепты
Рецепты – это новая возможность расширения функций Visual Studio и ваших проектов для частых задач: генерации кода, создании форм, скаффолдинга.
Рассмотрим, как работают рецепты на простом примере. Создайте проект на базе ASP.NET MVC 4 и с помощью пакетного менеджера NuGet установите пакет MvcHaack.ViewMobilizer. Этот пакет содержит в себе рецепт для автоматической генерации мобильных представлений для всех или избранных представлений вашего сайта.
После установки пакета в контекстном меню папки Views выберите пункт Add – Run Recipie (рисунок 8).
Рис. 8. Запуск рецепта
Перед вами появится окно выбора установленных в проект рецептов (рисунок 9).
Рис. 9. Окно выбора рецептов
Выберите рецепт View Mobilizer и нажмите ОК. Будет запущен внутренний механизм рецепта, который отобразит уже свою собственную форму позволяющую выбрать представления для созданий их мобильный версий (рисунок 10).
Рис. 10. Окно созданное рецептом
Выберите нужные представления и нажмите Mobilize! Вы можете задать необходимый постфикс, если создаете представления для собственных режимов отображения (например, iPhone). Рецепт автоматически создаст необходимые файлы и добавит их в проект (рисунок 11).
Рис. 11. Созданные с помощью рецепта файлы
Как работают рецепты
Рецепт – это библиотека классов, которая содержит специально созданный класс рецепта и необходимые диалоговые окна для задания параметров работы рецепта.
Рецепты могут быть разного типа, но все они должны реализовывать один из интерфейсов: IRecipe, IFolderRecipe, IFileRecipe, которые определены в новом пространстве имен Microsoft.VisualStudio.Web.Mvc.Extensibility.Recipes.
Класс рецепта должен являться экспортируемым типом фреймворка MEF, то есть быть отмечен атрибутом [Export(typeof(IRecipe))]. Ниже представлен класс рецепта View Mobilizer созданный Филом Хааком:
Рецепты – это мощный новый инструмент, который интегрируется в проекты с помощью пакетного менеджера NuGet и позволяет накапливать практики для кодогенерации и выполнении других рутинных задач. Со временем, благодаря сообществу и NuGet рецептов будет множество.
Поддержка Async для асинхронных контроллеров
Возможность создавать асинхронные контроллеры появилась в ASP.NET MVC уже давно. В новой версии фреймворка эту возможность можно будет использовать на базе мощных асинхронных нововведений новой версии C#.
Теперь вы сможете написать свой метод в асинхронном контроллере следующим образом:
Обратите внимание на использование новых конструкций языка async и await. Они позволяет этому коду выполнить методы newsService.GetHeadlinesAsync и sportsService.GetScoresAsync асинхронно.
Кроме непосредственной поддержки асинхронных расширений, во фреймворке добавлена поддержка таймаутов асинхронных расширений и возможности отмены выполнения асинхронной операции. Для определения таймаута асинхронного действия в контроллере необходимо пометить его новым атрибутом AsyncTimeout:
Для отображения специального представления после истечения времени таймаута используется атрибут HandleError:
[HandleError(ExceptionType = typeof(TaskCanceledException), View = «TimedOut»)]
После истечении времени таймаута клиенту будет показано представление TimeOut.
Кроме того, вы можете определить специальный параметр типа CancelationToken для того, чтобы добавить возможность отменить выполнение асинхронной операции (пример выше).
Заключение
Нововведения в ASP.NET MVC 4 представленные в первой Developer Preview версии демонстрируют желание разработчиков ответить на современные запросы стоящие перед веб-разработкой и предложить простые способы создания мобильных представлений сайтов и упростить работу со множеством мобильных устройств.
С другой стороны, рецепты позволяют по-новому расширить функционал проектов и Visual Studio на основе знакомых механизмов MEF и NuGet.
Наконец, поддержка асинхронных нововведений языка C#5 для создания асинхронных контроллеров и действий позволит значительно упростить создание сложных и масштабируемых веб-приложений.
ASP.NET MVC 4
В этом документе описывается выпуск бета-версии ASP.NET MVC 4 для Visual Studio 2010.
Это не самая последняя версия. Заметки о выпуске ASP.NET MVC 4 версии-КАНДИДАТа доступны здесь.
Замечания по установке
Бета-версию ASP.NET MVC 4 для Visual Studio 2010 можно установить с домашней страницы ASP.NET MVC 4 с помощью установщика веб – платформы.
Перед установкой бета-версии ASP.NET MVC 4 необходимо удалить все ранее установленные предварительные версии ASP.NET MVC 4.
ASP.NET MVC 4 можно установить и выполнять параллельно с ASP.NET MVC 3.
Документация
Документацию по ASP.NET MVC доступна на веб-сайте MSDN по URL-адресу:
Руководства и другие сведения о ASP.NET MVC доступны на странице MVC 4 веб-сайта ASP.NET (https://www.asp.net/mvc/mvc4).
Поддержка
Это предварительный выпуск, который официально не поддерживается. Если у вас возникли вопросы о работе с этим выпуском, опубликуйте их на форуме ASP.NET MVC (https://forums.asp.net/1146.aspx), где участники сообщества ASP.NET часто могут предоставлять неофициальную поддержку.
Требования к программному обеспечению
Для компонентов ASP.NET MVC 4 для Visual Studio требуется PowerShell 2,0 и Visual Studio 2010 с пакетом обновления 1 (SP1) или Visual Web Developer Express 2010 с пакетом обновления 1 (SP1).
Обновление проекта ASP.NET MVC 3 до ASP.NET MVC 4
ASP.NET MVC 4 можно установить параллельно с ASP.NET MVC 3 на том же компьютере, что дает гибкость в выборе времени обновления приложения ASP.NET MVC 3 до ASP.NET MVC 4.
Самый простой способ обновления — создать новый проект ASP.NET MVC 4 и скопировать все представления, контроллеры, код и файлы содержимого из существующего проекта MVC 3 в новый проект, а затем обновить ссылки на сборки в новом проекте, чтобы они соответствовали старому проекту. Если вы внесли изменения в файл Web. config в проекте MVC 3, необходимо также объединить эти изменения в файл Web. config в проекте MVC 4.
Чтобы вручную обновить существующее приложение ASP.NET MVC 3 до версии 4, выполните следующие действия.
Во всех файлах Web. config в проекте (один в корне проекта, один в папке Views, а другой — в папке Views для каждой области проекта) замените каждый экземпляр следующего текста:
со следующим соответствующим текстом:
В корневом файле Web. config обновите элемент веб -страницы: Version на «2.0.0.0» и добавьте новый ключ пресервелогинурл со значением «true»:
В обозреватель решений удалите ссылку на System. Web. MVC (которая указывает на библиотеку DLL версии 3). Затем добавьте ссылку на System. Web. MVC (v 4.0.0.0). В частности, внесите следующие изменения, чтобы обновить ссылки на сборки. Дополнительные сведения:
В обозреватель решений удалите ссылки на следующие сборки:
Добавьте ссылки на следующие сборки:
В обозреватель решений щелкните правой кнопкой мыши имя проекта и выберите команду Выгрузить проект. Затем щелкните имя правой кнопкой мыши и выберите пункт изменить имя_проекта. csproj.
Сохраните изменения, закройте файл проекта (. csproj), который вы редактировали, щелкните правой кнопкой мыши проект и выберите Перезагрузить проект.
Если проект ссылается на сторонние библиотеки, скомпилированные с помощью предыдущих версий ASP.NET MVC, откройте корневой файл Web. config и добавьте в раздел конфигурации следующие три элемента bindingRedirect :
Новые возможности в ASP.NET MVC 4 Beta
В этом разделе описываются функции, которые появились в бета-версии ASP.NET MVC 4.
Веб-API ASP.NET
ASP.NET MVC 4 теперь включает веб-API ASP.NET, новую платформу для создания служб HTTP, которые могут обращаться к широкому спектру клиентов, включая браузеры и мобильные устройства. Веб-API ASP.NET также является идеальной платформой для создания служб RESTFUL.
Веб-API ASP.NET включает поддержку следующих функций:
Дополнительные сведения о веб-API ASP.NET см. https://www.asp.net/web-api.
Одностраничное приложение ASP.NET
ASP.NET MVC 4 теперь включает в себя предварительную версию процесса создания одностраничных приложений с значительными взаимодействиями на стороне клиента с помощью JavaScript и веб-API. Эта поддержка включает в себя:
Дополнительные сведения о поддержке одностраничных приложений в ASP.NET MVC 4 см. https://www.asp.net/single-page-application.
Усовершенствования шаблонов проектов по умолчанию
Шаблон, используемый для создания новых проектов ASP.NET MVC 4, был обновлен для создания более современной веб-сайта:
Помимо косметических улучшений, в новом шаблоне улучшены функциональные возможности. Шаблон использует метод, называемый адаптивной отрисовкой, для удобного поиска в настольных браузерах и в мобильных браузерах без каких-либо настроек.
Чтобы увидеть адаптивную визуализацию в действии, можно использовать эмулятор мобильного устройства или просто попытаться уменьшить размер окна браузера настольных систем. Когда окно браузера становится достаточно малым, макет страницы изменится.
Еще одним усовершенствованием шаблона проекта по умолчанию является использование JavaScript для предоставления расширенного пользовательского интерфейса. Ссылки для входа и регистрации, используемые в шаблоне, являются примерами того, как использовать диалоговое окно пользовательского интерфейса jQuery для представления многофункционального экрана входа:
Шаблон мобильного проекта
Если вы запускаете новый проект и хотите создать сайт специально для мобильных и планшетных браузеров, можно использовать новый шаблон проекта мобильного приложения. Это основано на jQuery Mobile, библиотеке с открытым исходным кодом для создания пользовательского интерфейса, оптимизированного для сенсорного ввода:
Этот шаблон содержит ту же структуру приложения, что и шаблон Интернет-приложения (и код контроллера практически идентичен), но он использует jQuery Mobile, чтобы выглядеть хорошо и хорошо работать на мобильных устройствах с поддержкой сенсорного ввода. Дополнительные сведения о структурировании и стиле мобильного пользовательского интерфейса см. на веб-сайте мобильного проекта jQuery.
Если у вас уже есть сайт, ориентированный на Рабочий стол, в который нужно добавить представления, оптимизированные для мобильных устройств, или вы хотите создать отдельный сайт, который будет работать с другими представлениями для настольных и мобильных браузеров, можно использовать новые режимы отображения. (См. следующий раздел).
Режимы экрана
Новая функция режима отображения позволяет приложению выбирать представления в зависимости от браузера, выполняющего запрос. Например, если браузер настольных систем запрашивает домашнюю страницу, приложение может использовать шаблон Views\Home\Index.cshtml. Если браузер мобильного устройства запрашивает домашнюю страницу, приложение может вернуть шаблон Виевс\хоме\индекс.Мобиле.кштмл.
Макеты и части можно также переопределять для конкретных типов браузеров. Пример:
После выполнения этого кода, когда браузер Apple iPhone выполняет запрос, приложение будет использовать макет Views\Shared\_Layout. iPhone. cshtml (если он существует).
jQuery Mobile, переключатель представлений и переопределение браузера
jQuery Mobile — это библиотека с открытым исходным кодом для создания веб-интерфейса, оптимизированного для сенсорного ввода. Если вы хотите использовать jQuery Mobile с приложением ASP.NET MVC 4, можно скачать и установить пакет NuGet, который поможет приступить к работе. Чтобы установить его из консоли диспетчера пакетов Visual Studio, введите следующую команду:
Это устанавливает jQuery Mobile и некоторые вспомогательные файлы, включая следующие:
После установки пакета запустите приложение с помощью браузера для мобильных устройств (или аналогичного, например надстройки агента пользователя Firefox). Вы увидите, что страницы выглядят совершенно иначе, так как jQuery Mobile обрабатывает макет и стилизацию. Чтобы воспользоваться этим преимуществом, можно выполнить следующие действия.
В качестве соглашения для веб-страниц, оптимизированных для мобильных устройств, можно добавить ссылку, текст которой похож на вид рабочего стола или полного режима сайта, позволяющий пользователям переключаться на настольную версию страницы. Пакет jQuery. Mobile. MVC содержит пример компонента-переключателя представления для этой цели. Он используется в представлении по умолчанию Views\Shared\_Layout. Mobile. cshtml и выглядит следующим образом при подготовке страницы к просмотру:
Если посетитель щелкает ссылку, он переключается на настольную версию той же страницы.
Так как макет рабочего стола не будет включать переключатель представления по умолчанию, посетители не смогут перейти на мобильный режим. Чтобы включить эту функцию, добавьте следующую ссылку на _виевсвитчер в макет рабочего стола, непосредственно внутри элемента :
Переключатель представлений использует новую функцию, называемую переопределением браузера. Эта функция позволяет приложению обрабатывать запросы так, как будто они поступили из другого браузера (агента пользователя), отличного от того, на котором они действительно находятся. В следующей таблице перечислены методы, предоставляемые переопределением браузера.
По умолчанию переопределение агента пользователя хранится с помощью файла cookie. Если вы хотите сохранить переопределение в других местах (например, в базе данных), можно заменить поставщик по умолчанию (бровсероверридесторес. Current). Документация для этого поставщика будет доступна для последующего выпуска ASP.NET MVC.
Рецепты для создания кода в Visual Studio
Новая функция рецептов позволяет Visual Studio создавать код, зависящий от решения, на основе пакетов, которые можно установить с помощью NuGet. Платформа рецептов упрощает разработчикам написание подключаемых модулей для создания кода, которые также можно использовать для замены встроенных генераторов кода для добавления области, добавления контроллера и добавления представления. Поскольку рецепты развертываются как пакеты NuGet, их можно легко вернуть в систему управления версиями и предоставить доступ всем разработчикам в проекте автоматически. Они также доступны для каждого решения.
Поддержка задач для асинхронных контроллеров
Например, если вы используете Visual C# 5 (или Async CTP), то можете создать асинхронный метод действия, который выглядит следующим образом:
В предыдущем методе действия вызовы невссервице. жесеадлинесасинк и спортссервице. жетскоресасинк вызываются асинхронно и не блокируют поток из пула потоков.
Пакет SDK Azure
Бета-версия ASP.NET MVC 4 поддерживает выпуск пакета SDK для Windows Azure за Сентябрь 2011 1,5.
Известные проблемы и критические изменения
После установки бета-версии ASP.NET MVC 4 редактор CSHTML/VBHTML в Visual Studio 2010 с пакетом обновления 1 CSHTML/VBHTML может приостановиться в течение длительного времени после ввода фрагмента или JavaScript в файлах CSHTML или VBHTML. Это происходит только в приложениях ASP.NET MVC 4, которые были только что созданы и еще не скомпилированы.
Обходной путь заключается в компиляции проекта для получения сборок в папке bin. Обратите внимание, что при очистке проекта, который удаляет сборки из папки Bin, проблема с редактором будет восстановлена.
Это будет исправлено в следующем выпуске.
C#Шаблоны проектов для бета-версии Visual Studio 11 содержат неверную строку подключения в Global.asax.cs. Соединение по умолчанию, указанное в методе запуска_приложения для проектов, созданных в бета-версии Visual Studio 11, содержит строку подключения LocalDB, которая содержит обратную косую черту без escape-последовательности () символ. Это приводит к ошибке соединения при попытке доступа к Entity Framework DbContext, которая создает SqlException.
Чтобы устранить эту ошибку, следует отформатировать обратную косую черту в методе_запуска приложения Global.asax.cs, чтобы он пропускался следующим образом:
Элемент привязки сборки в измененном файле Web. config должен выглядеть следующим образом:
Шаблон элемента «Добавление контроллера» в Visual Basic проектах создает неверное пространство имен при вызовеиз области. При добавлении контроллера в область в проекте ASP.NET MVC, использующем Visual Basic, шаблон элемента вставляет в контроллер неправильное пространство имен. Результат — ошибка «файл не найден» при переходе к любому действию в контроллере.
Критические изменения в подсистеме представления Razor. В процессе перезаписи средства синтаксического анализа Razor следующие типы были удалены из System. Web. MVC. Razor:
Также были удалены следующие методы:
Когда WebMatrix. dll включается в каталог «ASP.NET» приложений MVC 4, он принимает по URL-адресу для проверки подлинности с помощью форм. Добавление сборки WebMatrix. WebDeploy. dll в приложение (например, при выборе «веб-страницы ASP.NET с синтаксисом Razor» при использовании диалогового окна Добавление развертываемых зависимостей) переопределяет перенаправление входа в систему проверки подлинности на/аккаунт/Логон, а не/аккаунт/логин, как ожидалось контроллером учетной записи ASP.NET MVC по умолчанию. Чтобы предотвратить такое поведение и использовать URL-адрес, который уже указан в разделе Authentication файла Web. config, можно добавить appSetting с именем Пресервелогинурл и задать для него значение true:
Не удается установить диспетчер пакетов NuGet при попытке установить ASP.NET MVC 4 для параллельных установок Visual Studio 2010 и Visual Web Developer 2010. Чтобы запустить Visual Studio 2010 и Visual Web Developer 2010 параллельно с ASP.NET MVC 4, необходимо установить ASP.NET MVC 4 после того, как обе версии Visual Studio уже установлены.
Удаление ASP.NET MVC 4 завершается сбоем, если предварительные условия уже удалены. Чтобы аккуратно удалить ASP.NET MVC 4you, перед удалением Visual Studio необходимо удалить ASP.NET MVC 4.
При запуске проекта веб-API по умолчанию отображаются инструкции, которые неправильно направляют пользователя на добавление маршрутов с помощью метода Регистерапис, который не существует. Маршруты должны быть добавлены в метод Регистерраутес с помощью таблицы маршрутов ASP.NET.
Установка ASP.NET MVC 4 Beta прерывает приложения ASP.NET MVC 3 RTM. Приложения ASP.NET MVC 3, созданные в выпуске RTM (а не в версии средства ASP.NET MVC 3 Tools Update), для параллельной работы с бета-версией ASP.NET MVC 4 должны внести следующие изменения. Сборка проекта без выполнения этих обновлений приведет к ошибкам компиляции.
Обязательные обновления
В корневом файле Web. config добавьте новую запись с ключевыми веб-страницами: Version и Value 1.0.0.0.
В обозреватель решений щелкните правой кнопкой мыши имя проекта и выберите команду Выгрузить проект. Затем щелкните имя правой кнопкой мыши и выберите пункт изменить имя_проекта. csproj.
Нахождение следующих ссылок на сборки:
Замените их следующим:
Сохраните изменения, закройте файл проекта (. csproj), который вы редактировали, и щелкните правой кнопкой мыши проект и выберите перезагрузить.