Как заставить VS анализировать файлы .cshtml с помощью Razor в консольном приложении .NET Framework? - PullRequest
0 голосов
/ 13 июня 2018

Что я делаю: Разработка консольного приложения .NET Framework, которое будет самостоятельно размещать веб-сайт ASP.NET (с использованием Microsoft.AspNetCore.Hosting).

Что у меня есть: Консольное приложение работает, оно размещает веб-сайт по указанному domain:port.Я настроил его на использование MVC, который также работает, то есть он находит контроллер, когда я перехожу на http://localhost:1234/Home/Index.

Проблема Теперь я хочу использовать Razor.Когда я добавляю .cshtml файлы, я получаю следующие ошибки в окне Error List: (Это не ошибки сборки, а ошибки, возникающие при открытии файла .cshtml. Если я закрываю файл, ошибки исчезают.Кроме того, проект создается успешно даже с этими ошибками)

'_ Page_Views_Home__ViewStart ___ Copy_cshtml.Execute ()': не найдено подходящего метода для переопределения
Имя «Контекст» не существует в текущем контексте
Имя 'ViewData' не существует в текущем контексте
Имя типа или пространства имен 'Помощники' не существует в пространстве имен 'System.Web'
Имя типа или пространства имен 'Linq' не завершаетсяв пространстве имен 'System'
Имя типа или пространства имен 'WebPages' не выходит в пространство имен 'System.Web'
Имя типа или пространства имен 'WebPages' не выходит в пространство имен 'System.Web'
Тип или имя пространства имен «WebPages» не выходят из пространства имен «System.Web»

Забавно, как произошла последняя ошибкаГрузы трижды для одного и того же файла, той же строки.

Различия между Консольное приложение (.NET Framework) и Веб-приложение ASP.NET (.NET Framework) Я до сих пор нашел:

  1. Я создал новое веб-приложение ASP.NET (.NET Framework), и у него тоже было .cshtml.Но вышеуказанные ошибки не появились.
  2. Я сравнил два проекта, чтобы понять, в чем их отличие.В корневой папке проекта был файл Web.config и папка Views.Я скопировал тогда в соответствующие места. Не удалось решить проблему .
  3. Также были файлы Global.asax.exe и Global.asax.cs.Но они, похоже, не имеют ничего общего с .cshtml файлами (или?).

Чем мой проект консольного приложения отличается от веб-приложения ASP.NET (.NET Framework) из-за которого я получаю вышеуказанные ошибки для .cshtml файлов ?

PS Не общая разница.Но, в частности, почему VS не анализирует синтаксис в файлах .cshtml с помощью Razor.Нужно ли мне изменять файл .csproj и что-то там настраивать?

Что можно сделать, чтобы исправить эту проблему?

Обновление

Iустановил все пакеты NuGet в консольном приложении .NET Framework , которые были установлены по умолчанию в .NET Framework ASP.NET Web Application .Я все еще получаю ошибки для файлов .cshtml.так что я предполагаю, что это не имеет никакого отношения к пакетам.

Теперь я обращаю внимание на файлы .csproj.Поэтому я сравниваю файлы проекта для двух типов проектов.Очевидно, что у них есть различия, но я не могу точно указать на что-либо.

Я добавил списки с файлами .csproj:

  1. .NET Framework ASP.NETВеб-приложение
  2. Консольное приложение .NET Framework

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Приложение ASP.NET Core является консольным приложением.Но, конечно, не все консольные приложения являются основными приложениями ASP.NET.Прежде всего, вам нужен пакет NuGet Microsoft.AspNetCore.All.Затем вы должны фактически запустить ASP.NET Core в вашем Program.cs.Обычно это делается через CreateDefaultWebHostBuilder, что вы тогда бы Build и Run.Это только дает вам инфраструктуру хостинга.Кроме того, вам необходимо добавить необходимые службы для рабочих процессов, которые вы используете.Для поддержки Razor View это в значительной степени services.AddMvc().Вы можете добавить это непосредственно с помощью компоновщика веб-хоста с помощью метода ConfigureServices или с помощью метода ConfigureServices в классе Startup (который затем нужно будет указать компоновщику веб-хостинга).Наконец, вам нужно активировать механизм MVC через app.UseMvc, который также будет вызываться в свободном методе Configure или Configure в вашем классе Startup.

Пока вы можете технически начинаются с нуля с простого старого консольного приложения, а объем начальной загрузки, требуемый для большинства веб-приложений, обычно приводит к созданию реального проекта базового веб-приложения ASP.NET, являющегося наилучшим маршрутом.Если вы не хотите начинать новый проект на данном этапе, я все равно рекомендую создать реальный проект базового веб-приложения ASP.NET, хотя бы временно, в качестве руководства по перенастройке существующего консольного приложения.

0 голосов
/ 13 июня 2018

Приложение ASP.NET Core - это консольное приложение .NET Core с некоторыми дополнительными файлами.Web.config не используется основными приложениями asp.net, он используется только для настроек IIS и включается в случае развертывания в IIS.

Основные приложения ASP.NET НЕ ИМЕЮТ global.asax или global.asax.cs, то есть только в более старых версиях ASP.NET

Более старое консольное приложение не является .NET Core, ему требуется полная платформа .NET для настольных систем.

...