在没有Microsoft.NET.Sdk.Web的情况下使用Razor

Ser*_*lov 5 razor razorengine asp.net-core asp.net-core-2.0

我正在编写简单的consoleApp(netcoreapp2.0)

<Project Sdk="Microsoft.NET.Sdk">
Run Code Online (Sandbox Code Playgroud)

并希望用mvc运行webserver.

class Program
{
    static void Main(string[] args)
    {
        WebHost.CreateDefaultBuilder()
            .ConfigureServices(services => services.AddMvc())
            .Configure(app => app.UseDeveloperExceptionPage().UseMvcWithDefaultRoute())
            .UseHttpSys().Build().Run();
    }
}

public class HomeController : Controller
{
    [HttpGet] public ActionResult Index() => View("Index");
}
Run Code Online (Sandbox Code Playgroud)

GET http // localhost:5000时收到错误

缺少一个或多个编译引用.确保您的项目引用了"Microsoft.NET.Sdk.Web",并且"PreserveCompilationContext"属性未设置为false.

可能的原因是Razor Engine.我怎样才能使它工作?我错过了什么?

Pad*_*aic 2

@using该错误消息可能是由于视图文件中缺失导致的Index.cshtml。尝试绕过索引视图,只从控制器返回一个字符串,如下所示,看看错误消息是否消失。

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            WebHost.CreateDefaultBuilder()
                .ConfigureServices(services => services.AddMvc())
                .Configure(app => app.UseDeveloperExceptionPage().UseMvcWithDefaultRoute())
                .UseHttpSys().Build().Run();
        }
    }

    public class HomeController : Controller
    {
        [HttpGet] public string Index() => "Hello World!";
    }
}
Run Code Online (Sandbox Code Playgroud)

工程项目

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Server.HttpSys" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.0.0" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)