VisualStudioでポチポチしてれば意識しなくてもよいのですが、ふと気になったので調べました。
.NET Framework RuntimeとDeveloperPack
MSの.NETのDLページに行くと以下のような選択肢があります。
RuntimeBuildはその名の通り、リリースされたアプリケーションを実行すWindowsにインストールするものです。.NETの実行に必要な仮想マシンや、標準ライブラリ(System.*
とか)が含まれていると思われます。
一方でDeveloperPackですが、こちらには開発に必要な一式が含です。その中にはSDKとTargetingPackが含まれています。それぞれの中身は後述。
Developer Pack には、.NET Framework の特定のバージョンと、それに付随する SDK が、その対応する Targeting Pack と共に含まれます。
https://docs.microsoft.com/ja-jp/dotnet/framework/install/guide-for-developers
.NET Framework SDKとTargetingTool
問題はこいつら
これら二つは、Developer Packに含まれていますが、それぞれ単体でも配布されています。気になるのはこの二つの違いですが、名前で何となくわかるものの腑に落ちない点がありました。
SDKはコンパイラや、ツール、サンプルなどが含まれています。しかし、最近のバージョンのものはDeveloperPackに含まれているのでDLページから単体でDLすることはできないようです。
Microsoft .NET Framework 2.0 Software Development Kit (x64) には、開発者が .NET Framework アプリケーションを作成、ビルド、テスト、および配置するために必要なものすべて (ドキュメント、サンプル、ツール、およびコンパイラ) が含まれています。.NET Framework 2.0 SDK (x64) をインストールする前に、.NET Framework 2.0 再頒布可能パッケージ Version 2.0 (x64) をインストールする必要があります。
https://www.microsoft.com/ja-jp/download/details.aspx?id=15354
TargetingToolは.NETアプリケーションまたはライブラリをコンパイルするときに、使える機能を制限するものです。VisualStudioのプロジェクトプロパティやcsprojで設定するターゲットです。例えば.NET Framework 4.5 TargetingPackを使って、.NET Framework 4.5をターゲットとしたアプリケーションを作ったのならば、.NET Framework 4.5の機能しか使っていないことが保証されているので、.NET Framework 4.5および上位互換の環境で実行ができるのです。
ここでふと思うのが、「こんなのSDKの一部じゃないの?」という点です。結局はDeveloperPackという形でまとめてあるわけですが、分けてある意味がまるで分かりません。これは推測ですが、SDKはとてもサイズが大きいので、.NET Framework 4.6のSDKだけインストールしておいて、.NET Framework 4.5をターゲットとしたアプリケーションをビルドする、といったようなことをしたいがためだったのではないかと思います。現在はSDKなんて小さいものなので基本的にはターゲットにしたいバージョンをSDKごとDeveloperPackでまとめて入れてしまうのがスタンダードなんだと思います。
ちなみにVisualStudio Installerの個別コンポーネントを見るとこの二つが分かれています。(そのせいで気になってしまいましたw)
ターゲットClientProfile
ClientProfileはASPの機能などを制限することで軽量なアセンブリが作れるそうです。しかし、.NET Framework 4.5以降では存在しません。これは、.NET Framework 4.5で最適化が進んだことに加え、ファイルサイズや処理性能がインフレしたことも理由にありそうな気がしています。
LanguagePack
何の疑問もわかないとは思いますが、ローカライズ用のPackです。エラーメッセージなどがローカライズされます。
(個人的にはエラーメッセージはエンコーディングを考えたくないので英語が好きですが)