目次

.NET 6 のアプリケーションを .NET 5 にダウングレードすると global using のエラーが発生しビルドできない - globeal using の自動生成をやめたい

.NET 6 のアプリケーションを .NET 5 にダウングレードすると global using のエラーが発生しビルドできない現象と対処法を紹介します。

現象

ASP.NET Webアプリケーションを .NET 6で作成しその後 .NET5 にダウングレードし、Program.csを従来形式に修正し、Startup.cs を追加してビルドすると、 下記のglobal using のエラーが発生しコンパイルができません。
エラーメッセージ
エラー CS8773
機能 'グローバル using ディレクティブ' は C# 9.0 では使用できません。言語バージョン 10.0 以上を使用してください



エラーをダブルクリックすると、(プロジェクトディレクトリ)\obj\Debug\net5.0\(プロジェクト名).GlobalUsings.g.cs ファイルが開かれ、以下のファイルが作成されています。

(プロジェクト名).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 にダウングレードしてプロジェクトをビルドできました。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2022-01-03
iPentec all rights reserverd.