Использование страниц MVC Razor в консольном приложении Asp.Net Core 2.1

Я пытался реализовать в своем приложении IdentityServer4 Quickstart UI. Однако мой IdentityServer уже работает в консольном приложении ASP.NET Core 2.1. Итак, я пытался заставить MVC работать в моем приложении.

Независимо от того, что я делаю, я всегда получаю следующую ошибку:

   Connection id "0HLF37NOM2HND", Request id "0HLF37NOM2HND:00000001": An unhandled exception was thrown by the application.
   System.InvalidOperationException: The view 'Index' was not found. The following locations were searched:
   /Views/Home/Index.cshtml
   /Views/Shared/Index.cshtml
   /Pages/Shared/Index.cshtml

Контроллер в порядке, но компиляция представления (и / или поиск cshtml не работает). Я никогда не получаю ConsoleApp1.Views.dll в выходной папке.

Итак, я создал новое приложение ASP.NET MVC из шаблона в Visual Studio, а также создал новое консольное приложение. Затем я скопировал все файлы из приложения MVC в приложение Console и включил необходимые пакеты nuget. Но я все еще получаю ту же ошибку. Представления расположены непосредственно в папке View в корне проекта.

введите здесь описание изображения

Я что-то упускаю? Могу ли я когда-нибудь заставить страницы Razor работать в проекте Microsoft.NET.Sdk?

Я загрузил свое тестовое приложение сюда: https://drive.google.com/open?id=1rfFsumn4g_StXNShhz5eOUa6WNz5JO5c

Изменить: Чтобы уточнить, представления будут найдены, если я перейду на Project Sdk = "Microsoft.NET.Sdk.Web" в .csproj. Однако я бы не хотел менять мое более крупное консольное приложение на веб-приложение.


person user1112634    schedule 06.07.2018    source источник
comment
Почему вы думаете, что получите ConsoleApp1.Views.dll файл?   -  person DavidG    schedule 06.07.2018
comment
Проект MVC выводит WebApplication1.Views.dll, я предполагаю, что это все часть проекта Sdk = Microsoft.NET.Sdk.Web? Наивно думал, что файлы .cshtml всегда компилируются в Core 2.1   -  person user1112634    schedule 06.07.2018
comment
Вы ведь понимаете, что веб-приложение ASP.NET Core является консольным приложением, верно? Вы в основном берете код из консольного приложения, которое уже имеет все необходимые вам функции, и пытаетесь переместить его в другое консольное приложение, еще не настроенное. К тому времени, когда вы все настроите правильно, у вас будет исходное веб-приложение, с которым вы начали.   -  person Chris Pratt    schedule 06.07.2018
comment
Да, я знаю, я делаю это только для упрощения задачи. Настоящее консольное приложение - это гораздо более крупное приложение, в котором работает веб-хост с IdentityServer4. Я хотел бы избежать изменения Project Sdk для всего приложения, чтобы заставить работать View   -  person user1112634    schedule 06.07.2018


Ответы (1)


Вам нужно будет использовать Microsoft.NET.Sdk.Razor, чтобы использовать это в приложении console \ class library.

https://github.com/aspnet/Razor/issues/2462

person user1112634    schedule 09.07.2018