インストール - .NET SDK
.NETをインストールする前に
.NETをインストールする前に、テレメトリ機能を無効にする。
vi ~/.profile
# ~/.profileファイル export DOTNET_CLI_TELEMETRY_OPTOUT=1 # または export DOTNET_CLI_TELEMETRY_OPTOUT=true
オプトアウトとは、個人情報の第三者提供に関し、個人データの第三者への提供を本人の求めに応じて停止することである。
依存関係のライブラリのインストール
パッケージ管理システムからインストール
パッケージ管理システムを使用してインストールする場合、以下のライブラリが自動的にインストールされる。
# RHEL libicu openssl openssl-libs krb5-server krb5-libs # SUSE libicu60_2 libicu-suse65_1 openssl openssl-1_1 libopenssl1_1 krb5
※注意
.NET Core 2.1以前のバージョンをインストールする場合、以下に示すライブラリもインストールする必要がある。
# RHEL sudo dnf iinstall libunwind libuuid # SUSE sudo zypper install libunwind libuuid1
手動でインストール
手動で.NETをインストールする場合および自己完結型ソフトウェアを公開する場合は、以下の依存関係のライブラリをインストールする。
# RHEL sudo dnf install curl libcurl lttng-ust libicu openssl openssl-libs krb5-server krb5-libs # SUSE sudo zypper install libicu60_2 libicu-suse65_1 openssl openssl-1_1 libopenssl1_1 krb5 または sudo zypper install lttng-ust libcurl zlib libicu60_2 libicu-suse65_1 openssl openssl-1_1 libopenssl1_1 krb5 # PinePhone (Mobian) sudo apt install libicu67 openssl libssl1.1
※注意
.NET Core 2.1より以前のバージョンには、以下の依存関係のライブラリもインストールする必要がある。
# RHEL sudo dnf iinstall libunwind libuuid # SUSE sudo zypper install libunwind libuuid1
リポジトリの登録
パッケージ管理システムからインストール
.NET SDKをインストールする前に、以下のコマンドを入力して、Microsoftリポジトリキーを登録する。
# RHEL # RHELに.NETをインストールするには、Red Hat Subscription Managerを使用して登録する必要がある sudo rpm -Uvh https://packages.microsoft.com/config/rhel/9/packages-microsoft-prod.rpm # SLE 15 sudo rpm -Uvh https://packages.microsoft.com/config/sles/15/packages-microsoft-prod.rpm sudo ln -s /etc/yum.repos.d/microsoft-prod.repo /etc/zypp/repos.d/microsoft-prod.repo # openSUSE Leap 15 sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc wget https://packages.microsoft.com/config/opensuse/15/prod.repo sudo mv prod.repo /etc/zypp/repos.d/microsoft-prod.repo sudo chown root:root /etc/zypp/repos.d/microsoft-prod.repo
リポジトリを最新の状態にするため、以下のコマンドを入力する。
# RHEL sudo dnf update # SUSE sudo zypper update
手動でインストール
リポジトリの登録は不要である。
.NET SDKのインストール
.NET SDKを使用すると、.NETを使用したソフトウェアが開発できる。
.NET SDK をインストールする場合は、対応するランタイムをインストールする必要はない。
パッケージ管理システムからインストール
.NET SDKをインストールするには、以下のコマンドを実行する。
# RHEL # .NETは、RHEL 9のAppStreamリポジトリに含まれている sudo dnf install dotnet-sdk-X.0 # X : メジャーバージョン # SUSE sudo zypper install dotnet-sdk-X.0 # X : メジャーバージョン
手動でインストール
まず、Microsoftの公式Webサイトにアクセスして、.Net SDKをダウンロードする。
ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。
tar xf dotnet-sdk-<バージョン名>-linux-x64.tar.gz mv dotnet-sdk-<バージョン名>-linux-x64 <任意のディレクトリ>
次に、~/.profileファイル等に、環境変数PATH
を設定する。
vi ~/.profile
# ~/.profileファイル
export PATH="<.NET SDKのインストールディレクトリ>:$PATH"
.NETランタイムのインストール
パッケージ管理システムからインストール
ASP.NETランタイムを使用すると、ランタイムを提供しない.NETを使用して開発されたソフトウェアが実行できる。
.NETの最も互換性の高いランタイムであるASP.NETランタイムがインストールには、以下のコマンドを実行する。
# RHEL sudo dnf install aspnetcore-runtime-X.0 # X : メジャーバージョン # SUSE sudo zypper install aspnetcore-runtime-X.0 # X : メジャーバージョン
ASP.NETランタイムの代替手段として、ASP.NETを含まない.NETランタイムをインストールする場合は、以下に示すコマンドを実行する。
# RHEL sudo dnf install dotnet-runtime-X.0 # X : メジャーバージョン # SUSE sudo zypper install dotnet-runtime-X.0 # X : メジャーバージョン
手動でインストール
Microsoftの公式Webサイトにアクセスして、.NETランタイムをダウンロードする。
ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。
tar xf runtime-<バージョン名>-linux-x64-binaries.tar.gz mv runtime-<バージョン名>-linux-x64-binaries <任意のディレクトリ>
次に、~/.profileファイル等に、環境変数PATH
を追記する。
vi ~/.profile
# ~/.profileファイル
export PATH="<.NETランタイムのインストールディレクトリ>:$PATH"
.NET Core 3.1 SDKのインストール
.NET Core 3.1 SDKを使用すると、.NETを使用したソフトウェアが開発できる。
.NET Core 3.1 SDKをインストールする場合は、対応するランタイムをインストールする必要はない。
パッケージ管理システムからインストール
.NET Core 3.1 SDKをインストールするには、以下のコマンドを入力する。
sudo zypper install dotnet-sdk-3.1
.NET Core 3.1 ランタイムのみをインストールするには、以下のコマンドを実行する。
sudo zypper install dotnet-runtime-3.1
もし、ASP.NET Core ランタイムも必要ならば、それもインストールする。
※注意
ASP.NET CoreのSDKは、.NET Core SDKに含まれているので注意すること。
sudo zypper install aspnetcore-runtime-3.1
手動でインストール
まず、Microsoftの公式Webサイトにアクセスして、.NET Core 3.1 SDKをダウンロードする。
ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。
tar xf sdk-<バージョン名>-linux-x64-binaries.tar.gz mv sdk-<バージョン名>-linux-x64-binaries <任意のディレクトリ>
次に、~/.profileファイル等に、環境変数PATH
を追記する。
vi ~/.profile
# ~/.profileファイル
export PATH="<.NET Core SDK 3.1のインストールディレクトリ>:$PATH"
.NET Core 3.1 ランタイムをインストールする場合も同様、Microsoftの公式Webサイトにアクセスして、.NET Core 3.1 ランタイムをダウンロードする。
ダウンロードしたファイルを解凍して、任意のディレクトリに保存する。
tar xf runtime-<バージョン名>-linux-x64-binaries.tar.gz mv runtime-<バージョン名>-linux-x64-binaries <任意のディレクトリ>
次に、~/.profileファイル等に、環境変数PATH
を追記する。
vi ~/.profile
# ~/.profileファイル
export PATH="<.NET Core ランタイムのインストールディレクトリ>:$PATH"
複数のバージョンのインストール (手動)
.NET Foundationが提供するインストールシェルスクリプトを使用して、.NETの複数のバージョンをインストールできる。
インストールシェルスクリプトのマニュアルは、Microsoftの公式Webサイトにある。
インストールシェルスクリプトに実行権限を付加する。
chmod u+x ./dotnet-install.sh
.NET SDKをインストールする。
currentチャネルからSTSチャネルに変更されたことに注意する。
# 最新の.NET SDKをインストールする場合 ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel STS -version latest # .NET SDK 7.0.100をインストールする場合 ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel STS -version 7.0.100 # .NET SDK 6.0.403 (LTS)をインストールする場合 ./dotnet-install.sh --install-dir <.NET SDKのインストールディレクトリ> -channel STS -version 6.0.403
また、インストールする前に-Dryrun
オプションまたは--dry-run
オプションを付加して、インストールをシミュレートすることもできる。
# 最新の.NET SDKのインストールをシミュレートする場合 ./dotnet-install.sh -Dryrun --install-dir <.NET SDKのインストールディレクトリ> -channel STS -version latest
インストールの完了後、利用可能な.NET SDKを確認することができる。
dotnet --list-sdks
複数のバージョンのアンインストール (手動)
dotnet-install.shファイルを使用してインストールした.NETをアンインストール手順を記載する。
自動化された.NET Uninstall Toolは、まだLinuxをサポートしていないため、手動でアンインストールする必要がある。
まず、インストールされている.NETのバージョンを表示する。
dotnet --list-sdks
次に、任意の.NET SDKをアンインストールする。
SDK_VERSION="5.0.403" DOTNET_UNINSTALL_PATH="${HOME}/InstallSoftware/NET_SDK" sudo rm -rf $DOTNET_UNINSTALL_PATH/sdk/$SDK_VERSION
dotnet-install.shファイルを使用してインストールしている場合、dotnetホストと共有パッケージもインストールされるが、
バージョンによっては、追加でアンインストールしなければならない場合もある。
以下の例では、.NET SDK(sdk、host、shared)を完全にアンインストールしている。
DOTNET_VERSION="<.NETのバージョン 例 : 5.0.12>" SDK_VERSION="<.NET SDKのバージョン 例 : 5.0.403>" cd <.NET SDKのインストールディレクトリ> rm -rf host/fxr/$DOTNET_VERSION rm -rf packs/Microsoft.AspNetCore.App.Ref/$DOTNET_VERSION rm -rf packs/Microsoft.NETCore.App.Host.linux-x64/$DOTNET_VERSION rm -rf packs/Microsoft.NETCore.App.Ref/$DOTNET_VERSION rm -rf sdk/$SDK_VERSION rm -rf sdk-manifests/$DOTNET_VERSION rm -rf shared/Microsoft.AspNetCore.All/$DOTNET_VERSION rm -rf shared/Microsoft.AspNetCore.App/$DOTNET_VERSION rm -rf shared/Microsoft.NETCore.App/$DOTNET_VERSION rm -rf templates/$DOTNET_VERSION
.NETランタイムまたは.NET SDKの設定
.NETランタイムを使用したソフトウェアを実行する場合、環境変数DOTNET_ROOT
にdotnet実行ファイルがあるディレクトリのフルパスを指定する必要がある。
既に、環境変数PATH
にdotnet実行ファイルがあるディレクトリのパスを追加している場合は、以下のように、~/.profileファイル等に追記する。
# Adding PATH environment variable
export PATH="<.NETランタイムまたは.NET SDKのインストールディレクトリ>:$PATH"
# Setting .NET Runtime or .NET SDK Directory
export DOTNET_ROOT="<.NETランタイムまたは.NET SDKのインストールディレクトリ> 例: $HOME/InstallSoftware/NET_8_SDK>"
# テレメトリを無効にする場合
export DOTNET_CLI_TELEMETRY_OPTOUT=1
# または
export DOTNET_CLI_TELEMETRY_OPTOUT=true
.NET Core SDKとランタイムの保存場所
.NET Core SDKとランタイムの親ディレクトリは、dotnet --list-sdks
コマンドおよびdotnet --list-runtimes
コマンドからの出力に一覧表示される。
.NET Coreをアンインストールする方法
.NET Core 2.1以降では、パッケージマネージャー(yumやapt-get、zypper等)を使用してアップグレードする場合、.NET Core SDKをアンインストールする必要はない。
パッケージマネージャーのupdateコマンドやrefreshコマンドでは、新しいバージョンが正常にインストールされると、古いバージョンが自動的に削除されるからである。
パッケージマネージャーを使用して.NET Coreをインストールした場合は、それと同じパッケージマネージャーを使用して、.NET Core SDKまたはランタイムをアンインストールする。
まず、.NET Core SDKと依存ファイルをアンインストールするため、以下のコマンドを実行する。
sudo zypper remove dotnet-sdk-3.1 sudo zypper remove libunwind libicu libuuid
次に、登録したリポジトリを削除する場合は、以下のコマンドを実行する。(削除は必須ではない)
sudo zypper remove /etc/yum.repos.d/microsoft-prod.repo
GPG鍵も含めて削除する場合は、以下のコマンドを実行する。(削除は必須ではない)
sudo rpm -qa gpg-pubkey \* --qf "%{version}-%{release} %{summary}\n" | grep microsoft
上記の検索結果に、********-******** gpg(Microsoft (Release signing) <gpgsecurity@microsoft.com>)のようなリストが表示される。(アスタリスクの箇所がGPG鍵である)
このGPG鍵を使用して、以下のコマンドを実行する。
sudo rpm -e --allmatches gpg-pubkey-xxxxxxxx-xxxxxxxx
一時ファイルの自動生成の無効化
.NETを使用するとき、/tmpディレクトリ内にclr-debug-pipeファイル(パイプファイル)およびdotnet-diagnostic(ソケットファイル)ファイルが自動的に作成される。
これらのファイルの自動生成を抑制する場合、~/.profileファイル等に以下に示す設定を追記する。
vi ~/.profile
# ~/.profileファイル
# デバッガ、プロファイラ、EventPipeの診断を有効または無効にする
# ただし、無効にする場合、デバッグ不可能となることに注意する
# export COMPlus_EnableDiagnostics=0 # または、DOTNET_EnableDiagnostics=0
export DOTNET_Diagnostics_LogDirectory="/dev/null"
export DOTNET_Diagnostics_AutoSaveDump=false
C#プロジェクトの作成
C#_Linuxという名前の.NETコンソールプロジェクトを作成する。
- VS Codeのメインメニューから、[ファイル] - [フォルダを開く]を選択する。
- [フォルダを開く]ダイアログから、C#_Linuxディレクトリを作成して、[フォルダを選択]を選択する。
このディレクトリ名がプロジェクト名と名前空間名になる。 - VS Codeのメインメニューから、[表示] - [端末]を選択する。
- VS Codeのメイン画面下部に、[ターミナル]タブが表示される。
- [ターミナル]タブにおいて、以下のコマンドを実行する。
- 単一の.NET SDKをインストールしている場合
dotnet new console
- または
dotnet new console --output C#_Sample01
- 複数の.NET SDKをインストールしている場合
dotnet new console --framework net6.0
例. .NET 6を使用する場合- または
dotnet new console --output C#_Sample01 --framework net6.0
例. .NET 6を使用する場合
- 単一の.NET SDKをインストールしている場合
- ワークスペースから、Program.csファイルを開く。
初めて、.csファイルを開く場合、OmniSharpがエディタに読み込まれる。 - VS Codeの右下に、ソフトウェアのビルドとデバッグに不足しているアセットを追加するメッセージが表示されるため、[Yes]ボタンを選択する。
C#プロジェクトをビルドおよび実行を同時に行う場合、C#プロジェクトのディレクトリに移動して、以下のコマンドを実行する。
dotnet run --project C#_Sample01
C#プロジェクトのデバッグ
launch.json
下表に、launch.jsonファイルの設定の意味を示す。
属性 | 意味 |
---|---|
preLaunchTask | デバッグ実行前に行うタスクを指定する。 tasks.jsonファイルにある tasks のlabel 属性の値を指定。
|
program | 起動するプログラムのパスを指定する。 初期設定は、${workspaceFolder}/bin/Debug/netX.Y/<ターゲットプラットフォーム>/<C#プロジェクト名>.dll |
args | 実行ファイルに与える引数を指定する。 複数の引数を指定する場合は、カンマ(,)で区切る。 |
cwd | プログラムの実行に使用するディレクトリを指定する。 初期設定は、 ${workspaceFolder}
|
console |
デバッグ対象のプログラムを起動するコンソールの指定する。
|
internalConsoleOptions |
|
externalConsoleOptions |
|
stopAtEntry |
|
その他、下表のような属性が設定できる。
属性 | 意味 |
---|---|
env | 環境変数を指定する。 |
launchBrowser | Webアプリケーションのデバッグを行う場合、起動するWebブラウザを指定する。 |
sourceFileMap | ソースファイルのマッピングを指定する。 |
symbolPath | シンボルパスを設定する。 |
justMyCode |
|
requireExactSource | デバッグ実行しているプログラムと一致したpdbファイルおよびソースファイルを必要とする。 |
enableStepFiltering | マネージコードのプロパティおよび演算子についてもステップ実行を行う。 |
logging | 出力コンソールに出力するログの種類を指定する。 |
pipeTransport | VS Codeとデバッガのバックエンドを接続するため、リモートコンピュータに接続する必要がある場合の設定を記述する。 |
入力の許可
デバッグコンソールは、実行中のプログラムのターミナル入力を受け付けないため、ターミナル入力を許可するには、統合ターミナルまたは外部ターミナルを使用する。
まず、プロジェクトディレクトリの.vscode/launch.jsonファイルを開く。
console
を、internalConsole
から以下のように変更する。
# VS Codeの統合ターミナルを使用する場合
"console": "integratedTerminal",
# VS Codeの外部ターミナルを使用する場合
"console": "externalTerminal",
.csファイルの任意のステップにおいて、[F9]キーを押下してブレークポイントを張る。
[F5]キーを押下して、C#プロジェクトをデバッグする。
.NET SDKのバージョンを切り替える
インストールされている.NET SDKのバージョンを確認する。
dotnet --list-sdks # 出力例 5.0.403 [/usr/local/share/dotnet/sdk] 6.0.100 [/usr/local/share/dotnet/sdk]
C#のプロジェクトディレクトリに移動して、以下のコマンドを実行する。
cd /<C#等のプロジェクトディレクトリ> dotnet new globaljson --sdk-version 5.0.403
これにより、global.jsonファイルが以下の内容で作成される。
{
"sdk": {
"version": "5.0.403"
}
}
最後に、.NET SDKのバージョンが切り替わっているかどうか確認する。
dotnet --version # 出力例 5.0.403
C#プロジェクトのリリース
C#のcsproj拡張子のファイルが存在するディレクトリにおいて、以下のコマンドを実行する。
dotnet publish -c:Release -r:<ターゲットプラットフォーム> -p:PublishReadyToRun=<trueまたはfalse> -p:PublishSingleFile=<trueまたはfalse> --self-contained:<trueまたはfalse>
以下の例では、Linux x64向けとPinePhone向けにリリースビルドしている。
# Linux x64向け dotnet publish -c:Release -r:linux-x64 -p:PublishReadyToRun=false -p:PublishSingleFile=true --self-contained:false # Linux Arch64向け (PinePhone、Raspberry Pi等) dotnet publish -c:Release -r:linux-arm64 -p:PublishReadyToRun=false -p:PublishSingleFile=true --self-contained:false
以下に、各オプションの意味を記載する。
-c:Release
- リリースビルド
-r:<ターゲットプラットフォーム>
- ターゲットプラットフォームは以下の通りである。
- win10-x64 … ターゲットをWindows 10 x64にする。
- win10-x86 … ターゲットをWindows 10 x86にする。
- linux-x64 … ターゲットをLinux x64にする。
- linux-x86 … ターゲットをLinux x86にする。
- linux-arm64 … ターゲットをLinux aarch64にする。
- linux-arm … ターゲットをLinux arm32にする。
- ターゲットプラットフォームは以下の通りである。
-p:PublishReadyToRun=true
- 事前コンパイル方式にする。
- 初回から起動速度が速くなる。ただし、ファイルサイズが少し大きくなる。
-p:PublishSingleFile=true
(推奨)- 出力ファイルを1つの実行ファイルにまとめる。
- ただし、.NET 5以降では、単一の実行ファイルにする場合、使用できないAPIや動作が変化するAPIが存在する。(Assemblyのパスが取得できない等)
- 代替手段も存在するため、以下に示すMicrosoftの公式Webサイトを参照すること。
- https://docs.microsoft.com/ja-jp/dotnet/core/deploying/single-file#api-incompatibility
--self-contained:false
(推奨)- 実行ファイルに.NETランタイムを含めない。
リリースビルドする実行ファイルにデバッグ情報を付加しない場合は、C#プロジェクトの.csprojファイルに以下の設定を追記する。(推奨)
<PropertyGroup>
<!-- ...略 -->
<DebugType Condition="'$(Configuration)' == 'Release'">none</DebugType>
<!-- ...略 -->
</PropertyGroup>
また、VS Codeで開発する場合、C#プロジェクトの.vscodeディレクトリにtasks.jsonファイルを作成して、以下の設定を追加してもよい。
[Ctrl] + [P]キーを同時押下してコマンドパレットを開いて、"task Debug"または"task Relese"と入力することにより、
デバッグビルドまたはリリースビルドすることができるようになる。
// tasks.json
"version": "〜",
"tasks": [
// ...略
// リリースビルド
{
"label": "Release",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"-c:Release",
"-r:<ターゲットプラットフォーム 例. linux-x64等>",
"-p:PublishReadyToRun=false",
"-p:PublishSingleFile=true",
"--self-contained:false",
"${workspaceFolder}/<C#プロジェクトのファイル名(.csprojファイル)>",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
],
"problemMatcher": "$msCompile"
},
// デバッグビルド
{
"label": "Debug",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"-c:Debug",
"-r:<ターゲットプラットフォーム>",
"-p:PublishReadyToRun=false",
"-p:PublishSingleFile=true",
"--self-contained:false",
"${workspaceFolder}/<C#プロジェクトのファイル名(.csprojファイル)>",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary",
],
"problemMatcher": "$msCompile"
},
// ...略
]
プロジェクトのターゲッットフレームワークの指定
ターゲットフレームワークは、プロジェクトファイルで指定する。
単一のターゲットフレームワークを指定する場合、プロジェクトファイル(.csproj)のTargetFramework
エレメントに記述する。
以下の例では、ターゲットを.NET 6に変更している。
.csprojファイル
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
</Project>
複数のターゲットを指定する場合、プロジェクトファイル(.csproj)のTargetFrameworks
エレメントにセミコロン(;
)で囲んで記述する。
以下の例では、ターゲットを.NET Core 3.1、.NET 6、.NET 7に変更している。
.csprojファイル
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1;net6.0;net7.0</TargetFrameworks>
</PropertyGroup>
</Project>
また、各ターゲットフレームワークのアセンブリを条件付きで参照することができる。
if-elif-else
プリプロセッサを使用して、それらのアセンブリに対して条件付きでコンパイルすることもできる。
以下の例では、.NET 6、.NET Standard 2.1、.NET Framework 4.8のAPIをターゲットとしている。
複数の.NET TFM向けにコンパイルする場合、Condition
属性には、実装固有のパッケージを含めることができる。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.1;net6.0;net48</TargetFrameworks>
</PropertyGroup>
<!-- Conditionally obtain references for the .NET Framework 6.0 target -->
<ItemGroup Condition=" '$(TargetFramework)' == 'net6.0' ">
<Reference Include="System.Net" />
</ItemGroup>
<!-- Conditionally obtain references for the .NET Framework 4.8 target -->
<ItemGroup Condition=" '$(TargetFramework)' == 'net48' ">
<Reference Include="System.Net.Http" />
<Reference Include="System.Threading.Tasks" />
</ItemGroup>
</Project>
public class MyClass
{
static void Main()
{
#if NET48
Console.WriteLine("Target framework: .NET Framework 4.8");
#elif NETSTANDARD2_1
Console.WriteLine("Target framework: .NET Standard 2.1");
#elif NET60
Console.WriteLine("Target framework: .NET 6.0");
#else
Console.WriteLine("Target framework: etc");
#endif
}
}
サポートされるターゲットフレームワークのバージョンを表すプリプロセッサを、下表に示す。
.NET Standard、.NET Core、.NET 5以降のTFMを表すプリプロセッサを使用する場合、ドットおよびハイフンをアンダースコアに置き換え、小文字を大文字に変更する。
(例えば、netstandard 2.1のプリプロセッサは、NETSTANDARD2_1
)
これらのプリプロセッサは、DisableImplicitFrameworkDefines
プロパティで無効にすることができる。
DisableImplicitFrameworkDefines
プロパティの詳細を知りたい場合は、Microsoftの公式Webサイトを参照すること。
ターゲットフレームワーク | プリプロセッサ | その他.NET 5以降で使用できるプリプロセッサ |
---|---|---|
.NET 5以降 および .NET Core | NET NET7_0 NET6_0 NET5_0 NETCOREAPP NETCOREAPP3_1 NETCOREAPP3_0 NETCOREAPP2_2 NETCOREAPP2_1 NETCOREAPP2_0 NETCOREAPP1_1 NETCOREAPP1_0 |
NET7_0_OR_GREATER NET6_0_OR_GREATER NET5_0_OR_GREATER NETCOREAPP3_1_OR_GREATER NETCOREAPP3_0_OR_GREATER NETCOREAPP2_2_OR_GREATER NETCOREAPP2_1_OR_GREATER NETCOREAPP2_0_OR_GREATER NETCOREAPP1_1_OR_GREATER NETCOREAPP1_0_OR_GREATER |
.NET Standard | NETSTANDARD NETSTANDARD2_1 NETSTANDARD2_0 NETSTANDARD1_6 NETSTANDARD1_5 NETSTANDARD1_4 NETSTANDARD1_3 NETSTANDARD1_2 NETSTANDARD1_1 NETSTANDARD1_0 |
NETSTANDARD2_1_OR_GREATER NETSTANDARD2_0_OR_GREATER NETSTANDARD1_6_OR_GREATER NETSTANDARD1_5_OR_GREATER NETSTANDARD1_4_OR_GREATER NETSTANDARD1_3_OR_GREATER NETSTANDARD1_2_OR_GREATER NETSTANDARD1_1_OR_GREATER NETSTANDARD1_0_OR_GREATER |
.NET Framework | NETFRAMEWORK NET48 NET472 NET471 NET47 NET462 NET461 NET46 NET452 NET451 NET45 NET40 NET35 NET20 |
NET48_OR_GREATER NET472_OR_GREATER NET471_OR_GREATER NET47_OR_GREATER NET462_OR_GREATER NET461_OR_GREATER NET46_OR_GREATER NET452_OR_GREATER NET451_OR_GREATER NET45_OR_GREATER NET40_OR_GREATER NET35_OR_GREATER NET20_OR_GREATER |
ターゲットフレームワークは、通常、ターゲットフレームワークモニカー(TFM)により参照される。
下表に、.NET SDKおよびNuGetクライアントによってサポートされるターゲットフレームワークを示す。
同等のものが括弧内に示されている。 例えば、win81はnetcore451と同等のTFMである。
対象とする Framework | TFM |
---|---|
.NET 5以降および.NET Core | netcoreapp1.0 netcoreapp1.1 netcoreapp2.0 netcoreapp2.1 netcoreapp2.2 netcoreapp3.0 netcoreapp3.1 net5.0 net6.0 net7.0 |
.NET Standard | netstandard1.0 netstandard1.1 netstandard1.2 netstandard1.3 netstandard1.4 netstandard1.5 netstandard1.6 netstandard2.0 netstandard2.1 |
.NET Framework | net11 net20 net35 net40 net403 net45 net451 net452 net46 net461 net462 net47 net471 net472 net48 |
ユニバーサルWindowsプラットフォーム | uap (uap10.0) uap10.0 (win10) (netcore50) |
.NET Micro Framework | netmf |
Windowsストア | netcore (netcore45) netcore45 (win) (win8) netcore451 (win81) |
TFMの詳細は、Microsoftの公式Webサイトを参照すること。
VS Codeの拡張機能
VS Codeでは、拡張機能をインストールすることにより、C#の機能を強化することができる。
C#の開発におけるVS Codeの拡張機能を以下に示す。
- C#
- この拡張機能は、シンタックスハイライティング、インテリセンス、定義への移動、すべての参照の検索などを追加します。また、C#アプリケーションのデバッグをサポートします。
- デバッグについては、.NET Coreデバッガの設定方法を参照することを推奨する。
- C# Extensions
- C#のクラスやインターフェースを簡単に追加できる機能である。
- この拡張機能は、クラスやインターフェイスのための新しいファイルの作成およびプロジェクトの名前空間を設定等を自動で行う。
- C# Snippets
- C#のコードスニペットを多数収録している。
- C# XML Documentation Comments
- ソースコードにXMLコメントを追加する時、より快適な操作性を実現する機能である。
ASP.NET Coreの開発におけるVS Codeの拡張機能を以下に示す。
- ASP.NET Core Snippets
- ASP.NET Coreのコントローラやアクションを簡単に構築するためのスニペットを収録している。
- WilderMinds社のASP.NET Core Snippets
- ASP.NET Core Snippetsの代わりに、よく似たスニペットセットを収録している。
- ASP.NET Helper
- Razorのビューページ内にIntellisenseを追加する。
- HTML Snippets
- HTMLスニペットに加えて、HTMLシンタックスハイライトのサポートを追加する。
- ちなみに、VS CodeにはEmmetが内蔵されており、HTMLのコーディングが非常に速くなる。
- IntelliSense for CSS class names
- プロジェクト内のCSSクラス定義に基づいて、HTMLのclass属性にCSSクラス名を補完する。
その他
- Git Extension Pack
- Gitにおける5つの拡張機能をインストールする拡張機能である。