web-dev-qa-db-ja.com

Microsoft.NET.Sdk.WebなしでRazorを使用する

私は簡単なconsoleApp(netcoreapp2.0)を書いています

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

そして、MVCでWebサーバーを実行したい。

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");
}

GET http // localhost:5000中にエラーが発生します

1つ以上のコンパイル参照が欠落しています。プロジェクトが「Microsoft.NET.Sdk.Web」を参照しており、「PreserveCompilationContext」プロパティがfalseに設定されていないことを確認してください。

おそらく理由はRazorEngineにあります。どうすればそれを機能させることができますか?私は何を取りこぼしたか?

7
Sergey Shuvalov

このエラーメッセージは、@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!";
    }
}

csproj

<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>
2
Padhraic

ビューがもう存在しないモデルを参照しているときに私に起こりました。私の場合、それは確認ページだったので、私が扱っていた「大きな」ビューではありませんでした。 VSで多くのビューを開くと、エラーが明らかになる可能性があります。

0
Eric