「インストール - .NET SDK」の版間の差分

ナビゲーションに移動 検索に移動
506行目: 506行目:
<br><br>
<br><br>


== C#プロジェクトにおけるターゲッットフレームワークの変更 ==
== プロジェクトのターゲッットフレームワークの指定 ==
C#プロジェクトのターゲットフレームワークを1つ設定するには、プロジェクトファイル(.csproj)を開いて、<code>TargetFramework</code>エレメントを変更する。<br>
ターゲットフレームワークは、プロジェクトファイルで指定する。<br>
<br>
<br>
以下の例では、ターゲットを.NET 5に変更している。<br>
単一のターゲットフレームワークを指定する場合、プロジェクトファイル(.csproj)の<code>TargetFramework</code>エレメントに記述する。<br>
<br>
以下の例では、ターゲットを.NET 6に変更している。<br>
  <syntaxhighlight lang="xml">
  <syntaxhighlight lang="xml">
  .csprojファイル
  .csprojファイル
516行目: 518行目:
   <PropertyGroup>
   <PropertyGroup>
       <OutputType>Exe</OutputType>
       <OutputType>Exe</OutputType>
       <TargetFramework>net5.0</TargetFramework>
       <TargetFramework>net6.0</TargetFramework>
   </PropertyGroup>
   </PropertyGroup>
  </Project>
  </Project>
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
複数のターゲットを指定する場合、<code>TargetFrameworks</code>エレメントを使用して、セミコロン(<code>;</code>)で囲む必要がある。<br>
複数のターゲットを指定する場合、プロジェクトファイル(.csproj)の<code>TargetFrameworks</code>エレメントにセミコロン(<code>;</code>)で囲んで記述する。<br>
以下の例では、ターゲットを.NET Core 3.1、.NET 5、.NET 6に変更している。<br>
以下の例では、ターゲットを.NET Core 3.1、.NET 5、.NET 6に変更している。<br>
  <syntaxhighlight lang="xml">
  <syntaxhighlight lang="xml">
529行目: 531行目:
   <PropertyGroup>
   <PropertyGroup>
       <OutputType>Exe</OutputType>
       <OutputType>Exe</OutputType>
       <TargetFrameworks>netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
       <TargetFrameworks>netcoreapp3.1;net6.0;net7.0</TargetFrameworks>
   </PropertyGroup>
   </PropertyGroup>
  </Project>
  </Project>
</syntaxhighlight>
<br>
また、各ターゲットフレームワークのアセンブリを条件付きで参照することができる。<br>
<code>if-elif-else</code>プリプロセッサを使用して、それらのアセンブリに対して条件付きでコンパイルすることもできる。<br>
<br>
以下の例では、.NET 6、.NET Standard 2.1、.NET Framework 4.8のAPIをターゲットとしている。<br>
複数の.NET TFM向けにコンパイルする場合、<code>Condition</code>属性には、実装固有のパッケージを含めることができる。<br>
<syntaxhighlight lang="xml">
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>netstandard2.1;net6.0;net48</TargetFrameworks>
  </PropertyGroup>
  <!-- Conditionally obtain references for the .NET Framework 4.0 target -->
  <ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' ">
    <Reference Include="System.Net" />
  </ItemGroup>
  <!-- Conditionally obtain references for the .NET Framework 4.5 target -->
  <ItemGroup Condition=" '$(TargetFramework)' == 'net48' ">
    <Reference Include="System.Net.Http" />
    <Reference Include="System.Threading.Tasks" />
  </ItemGroup>
</Project>
</syntaxhighlight>
<br>
<syntaxhighlight lang="c#">
public class MyClass
{
    static void Main()
    {
#if NET48
      Console.WriteLine("Target framework: .NET Framework 4.8");
#elif NET60
      Console.WriteLine("Target framework: .NET 6.0");
#else
      Console.WriteLine("Target framework: .NET Standard 2.1");
#endif
    }
}
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>

案内メニュー