DEV Community

Cover image for ポータブル.NETプロジェクト〜開発プロジェクト毎に隔離された異なる.NET Framework SDKバージョンをインストールする方法を解説
Ken Okabe
Ken Okabe

Posted on

ポータブル.NETプロジェクト〜開発プロジェクト毎に隔離された異なる.NET Framework SDKバージョンをインストールする方法を解説

.NETの異なるバージョン

image

https://dotnet.microsoft.com/ja-jp/download

.NETにはバージョンがあります。

異なるバージョンの互換性の問題

通常の手順に従うとローカルマシンのグローバル環境にインストールすることになり、たとえば、.NET6.0から.NET7.0にアップグレードする際など、既存の個別の.NETプロジェクトでバージョン互換性の問題が発生してしまいます。

Dockerなどのコンテナ技術は、このような複数の異なるバージョンを互いに安全に隔離して、異なるバージョンでそれぞれ開発されたプロジェクトやアプリケーションを運用するために開発された技術であると言えます。

環境の隔離

docker

Docker(ドッカー)は、コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンプラットフォームである[5]。

.NET Framework での side-by-side 実行

https://learn.microsoft.com/ja-jp/dotnet/framework/deployment/side-by-side-execution

side-by-side 実行は、アプリケーションまたはコンポーネントの複数のバージョンを同じコンピューターで実行する機能です。 共通言語ランタイムの複数のバージョン、および 1 つの共通言語ランタイムを使用するアプリケーションとコンポーネントの複数のバージョンを同じコンピューターで同時に実行できます。

https://atmarkit.itmedia.co.jp/fdotnet/technology/idnfw11_04/idnfw11_04_01.html

.NET Frameworkのバージョン・ポリシー

 これまで、開発者はソフトウェアのバージョンについて、次のような悩みを抱えていた。

  • ユーザーにできるだけ新しいバージョンを使ってもらいたい。
  • 下位互換性のテストはやりたくないし、完全にはできない。
     また、ユーザーはユーザーで次のような悩みを抱えていた。

  • 新しいバージョンを入れた結果、既存のアプリケーションが動かなくなるのは困る。

  • 新バージョンに問題がある場合は、素早く簡単に、うまく動作していた以前のバージョンに戻したい。

 .NET Frameworkには、これまでの反省が大いに活かされている。ここからは、.NET Frameworkのソフトウェアのバージョン管理方法を解説しよう。

.NETでは実行時からして、バージョン非互換の問題が発生しないようなバージョン・ポリシーがある優れた設計です。

ポータブル.NETプロジェクトの作成が可能

.NET Frameworkでは実行時だけではなく、開発プロジェクト毎に異なるSDKバージョンをインストールすることができます。いわばポータブル.NETプロジェクトが作成可能なのです。

繰り返しですが、通常の手順に従うとローカルマシンのグローバル環境にインストールすることになり、たとえば、.NET6.0から.NET7.0にアップグレードする際など、既存の個別の.NETプロジェクトでバージョン互換性の問題が発生してしまいます。

しかし、ちょっとした工夫でDockerのような仕組みを必要とせず、プロジェクト・ディレクトリー毎に異なる.NET Framework環境を安全に隔離することができます。

ポータブル.NETプロジェクトの作成アウトライン

1. .NET-SDKダウンロード

公式サイトから任意のプラットフォームの特定バージョンの.NET-SDKのバイナリ(アーカイブ)をダウンロードする

2. プロジェクト・ディレクトリにSDKを配置

プロジェクトディレクトリ下に.NET-SDKディレクトリを作成し、そのディレクトリ下で解凍・展開

3. PATHを通す

ターミナル環境とVSCodeで.NET-SDKの相対PATHを通す

1. .NET-SDKダウンロード

公式サイトから任意のプラットフォームの特定バージョンの.NET-SDKのバイナリ(アーカイブ)をダウンロードします。

https://dotnet.microsoft.com/ja-jp/download

image

おすすめ 、とも書いてあるし、最近安定リリースされた.NET 7.0をLinux環境にインストールすることにします。

全 .NET 7.0 ダウンロード

image

ここで、通常のインストールならば、OS毎の インストーラー を選択することになるのですが、ポータブルSDKインストールのためにはバイナリを個別に指定してダウンロードします。また、dotnet-install scriptsでもできないことはないかもしれませんが、事前知識やコマンドが煩雑になると思います。

今回は、LInux/x64プラットフォームのバイナリをダウンロードします。

image

dotnet-sdk-7.0.102-linux-x64.tar.gz というような特定のバージョンと特定のプラットフォームのアーカイブファイルがダウンロードされるはずです。

2. プロジェクト・ディレクトリにSDKを配置

プロジェクトディレクトリ下に.NET-SDKディレクトリを作成し、そのディレクトリ下でダウンローしたアーカイブファイルを解凍・展開していきます。

任意のプロジェクト・ディレクトリを作成します。今回はfs-test という名前のF#(.NET)のためのプロジェクトを作成します。

以下ターミナル環境

$ mkdir fs-test
Enter fullscreen mode Exit fullscreen mode

作成したディレクトリへ移動し、さらに.NET-SDKのディレクトリを作成します。なんでも良いのですが、.netという名前のディレクトリを作成します。

$ cd fs-test
$ mkdir .net
Enter fullscreen mode Exit fullscreen mode

適当なアンアーカイバ−を利用し、すでにダウンロードしているファイルを解凍し、このディレクトリ下に配置します。

結果、以下のようなディレクトリ構成になるようにします。

fs-test
└── .net
    ├── dotnet
    ├── host
    ├── LICENSE.txt
    ├── packs
    ├── sdk
    ├── sdk-manifests
    ├── shared
    ├── templates
    └── ThirdPartyNotices.txt
Enter fullscreen mode Exit fullscreen mode

3. PATHを通す

ターミナル環境とVSCodeで.NET-SDKの相対PATHを通します。

https://dotnet.microsoft.com/ja-jp/download/dotnet/thank-you/sdk-7.0.102-linux-x64-binaries

には、

image

とありますが、これは$HOMEに配置されたSDKへのPATHを通す方法です。

$HOME/dotnet の代わりに./.net/dotnet と相対パスにする方法もありますが、自分はZSHの.zshrcで、以下のようにdotnetコマンドのエイリアスを作りました。

alias dotnet='.net/dotnet'
Enter fullscreen mode Exit fullscreen mode

ターミナル環境(ZSH)を再度立ち上げるなどして、環境偏向を反映させます。

カレントディレクトリがプロジェクトルートの fs-testであることを確認した上で、dotnetコマンドが通るか?正しいバージョンが表示されるか?確認します。

$ dotnet --version
7.0.102
Enter fullscreen mode Exit fullscreen mode

これで、別の.NETプロジェクトでたとえばNET6.0-SDKを配置した場合、同じコマンドで、相対PATHでプロジェクトローカルのSDK特定されるので、異なる適切な.NETバージョンが表示されるはずです。

ポータブル.NETプロジェクトのSDKのディレクトリである.netのサイズは535.6Mでした。

Next

VSCodeでF#.NETの開発環境構築する方法を解説

Top comments (0)