.NET 6 のアプリケーションを .NET 5 にダウングレードすると global using のエラーが発生しビルドできない現象と対処法を紹介します。
ASP.NET Webアプリケーションを .NET 6で作成しその後 .NET5 にダウングレードし、Program.csを従来形式に修正し、Startup.cs を追加してビルドすると、
下記のglobal using のエラーが発生しコンパイルができません。
エラーをダブルクリックすると、(プロジェクトディレクトリ)\obj\Debug\net5.0\(プロジェクト名).GlobalUsings.g.cs
ファイルが開かれ、以下のファイルが作成されています。
// <auto-generated/>
global using global::Microsoft.AspNetCore.Builder;
global using global::Microsoft.AspNetCore.Hosting;
global using global::Microsoft.AspNetCore.Http;
global using global::Microsoft.AspNetCore.Routing;
global using global::Microsoft.Extensions.Configuration;
global using global::Microsoft.Extensions.DependencyInjection;
global using global::Microsoft.Extensions.Hosting;
global using global::Microsoft.Extensions.Logging;
global using global::System;
global using global::System.Collections.Generic;
global using global::System.IO;
global using global::System.Linq;
global using global::System.Net.Http;
global using global::System.Net.Http.Json;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using は.NET 6からの機能のため、.NET 5では利用できずコンパイルエラーが発生します。
.NET 5では利用できない機能ですが、ファイルが生成されてしまうため、global using のファイル生成を止めたいです。
プロジェクトファイルのコードを開きます。
ソリューションエクスプローラーで対象のプロジェクトのノードをクリックして選択します。
右クリックしてポップアップメニューを表示します。ポップアップメニューの[プロジェクト ファイルの編集]の項目をクリックします。
XML形式のプロジェクトファイルが開かれます。XML内のImplicitUsings
タグの値を disable
に変更します。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>disable</ImplicitUsings>
</PropertyGroup>
</Project>
プロジェクトをビルドして、ビルドが完了することを確認します。もしうまくいかない場合は、一度プロジェクトをクリーンしてから、再度ビルドを実施します。
global using の生成を止めて、.NET 5 にダウングレードしてプロジェクトをビルドできました。