目次

ビルド時に 「条件 "'$(TargetPlatformIdentifier)' == 'Windows' and '$(TargetPlatformVersion)' >= '8.0'" で、数字ではなく "" と評価された "$(TargetPlatformVersion)" に対して、数値比較を実行しようとしました。」エラーが発生する

ビルド時に 「条件 "'$(TargetPlatformIdentifier)' == 'Windows' and '$(TargetPlatformVersion)' >= '8.0'" で、数字ではなく "" と評価された "$(TargetPlatformVersion)" に対して、数値比較を実行しようとしました。」エラーが発生して、ビルドできない現象について紹介します。

現象

次のエラーが発生します。
Windows App SDKを導入してビルドした場合に発生することが多いです。
エラーメッセージ
条件 "'$(TargetPlatformIdentifier)' == 'Windows' and '$(TargetPlatformVersion)' >= '8.0'" で、数字ではなく "" と評価された
  "$(TargetPlatformVersion)" に対して、数値比較を実行しようとしました。
C:\Users\(ユーザー名)\.nuget\packages\microsoft.windowsappsdk\1.1.4\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets
英語では以下のメッセージになります。
エラーメッセージ
A numeric comparison was attempted on "$(TargetPlatformVersion)" that evaluates to "" instead of a number, in condition
  "'$(TargetPlatformIdentifier)' == 'Windows' and '$(TargetPlatformVersion)' >= '8.0'".
C:\Users\(user name)\.nuget\packages\microsoft.windowsappsdk\1.1.4\buildTransitive\Microsoft.UI.Xaml.Markup.Compiler.interop.targets

原因

TargetFramework の設定で、バージョン番号が設定されていないことが原因です。

対処法

プロジェクトファイルを編集します。
変更前プロジェクトファイル / (プロジェクト名).csproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>

  </ItemGroup>

</Project>
変更後プロジェクトファイル / (プロジェクト名).csproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>

  </ItemGroup>

</Project>

以下のTargetFrameworkをバージョン番号を付けた、ターゲット フレームワーク モニカーに変更します。
<TargetFramework>net6.0-windows</TargetFramework>
<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>

変更後にビルドしてエラーが解消されることを確認します。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-08-12
作成日: 2022-08-12
iPentec all rights reserverd.