13,009
回編集
506行目: | 506行目: | ||
<br><br> | <br><br> | ||
== | == プロジェクトのターゲッットフレームワークの指定 == | ||
ターゲットフレームワークは、プロジェクトファイルで指定する。<br> | |||
<br> | <br> | ||
以下の例では、ターゲットを.NET | 単一のターゲットフレームワークを指定する場合、プロジェクトファイル(.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> | <TargetFramework>net6.0</TargetFramework> | ||
</PropertyGroup> | </PropertyGroup> | ||
</Project> | </Project> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <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; | <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> |