ASP.NET CoreアプリケーションのProgram.cs を新しい形式に変更してビルドすると、ビルドエラーが発生する現象について紹介します。
現象の確認
ASP.NET Coreアプリケーションで旧形式のProgram.cs を新しい Program.cs に変更します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace SimpleBlazorPages
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
var app = builder.Build();
app.UseRouting();
app.MapRazorPages();
app.Run();
新しい形式に変更してビルドすると、以下のエラーが発生します。
エラーメッセージ
CS0103:現在のコンテキストに 'WebApplication' という名前は存在しません
原因
Microsoft.AspNetCore.Builder 名前空間の WebApplication クラスの参照ができないため、ビルドエラーが発生します。
.NET 6を選択してASP.NET Core Webアプリケーションをテンプレートから作成した場合は、暗黙で Microsoft.AspNetCore.Builder がusingされるため、
ビルドエラーは発生しません。
対処法
新しい形式の Program.cs に変更した場合は、プロジェクトファイルのXMLを修正します。
以下の記述を
PropertyGroup
タグ内に記述します。
<ImplicitUsings>enable</ImplicitUsings>
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
</Project>
PropertyGroup
タグ内に
ImplicitUsings
タグを記述し、
enable
を指定します。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
プロジェクトファイル変更後にビルドするとビルドエラーが発生せずにビルドできます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-07-21
作成日: 2022-07-20