.NET Core:バージョン番号とglobal.json

これを読んでいるほとんどの人は、MicrosoftがMicrosoft Build 2017でASP.NET Core.NET Core 2.0 Preview 1を最近発表したことを知っていると確信しています。













この記事には、ASP.NET Coreの概要を説明する目的はありません。 代わりに、.NET Core 2.0 Preview 1をコンピューターにインストールして、ASP.NET Core 1.0 / 1.1で実行されている他のプロジェクトに干渉しないようにすることを検討します。 つまり 1台のコンピューターに複数のバージョンの.NET Coreをインストールします。









.NET Core 2.0 Preview 1 SDKをインストールします



明らかに、最初に行うことは、ここから .NET Core 2.0 Preview 1 SDK インストールすることです 。 非常に簡単です。インストールオプションを選択する必要はありません。ダウンロードしてインストールするだけです。 バージョン番号は1つだけです!













1つの小さなメモ:.NET CoreにはASP.NET Coreも含まれるようになりました。 これは、アプリケーションをデプロイするときに、より少ない外部パッケージをインストールする必要があることを意味します。これは朗報です!







Visual StudioでASP.NET Core 2.0アプリケーションを作成する場合 Visual Studio 2017の予備バージョンをインストールする必要があることにも注意してください。これは、安定バージョンと並行してインストールできます。







.NET Coreバージョン



新しい.NET Coreにはバージョン2.0プレビュー1の1つのバージョン番号しかありませんが、これは完全に真実ではありません。 .NET Coreのインストールには、SDK / CLIバージョン番号(コマンドラインインターフェイス)とランタイムバージョン番号(ランタイムまたは.NET Core共有フレームワークホスト)の2つの異なる側面があります。







2.0プレビュー1をインストールしたばかりの場合、コンソールでdotnet --infoと入力すると、次のようなものが表示されます。







$ dotnet --info .NET Command Line Tools (2.0.0-preview1-005977) Product Information: Version: 2.0.0-preview1-005977 Commit SHA-1 hash: 414cab8a0b Runtime Environment: OS Name: Windows OS Version: 10.0.14393 OS Platform: Windows RID: win10-x64 Base Path: C:\Program Files\dotnet\sdk\2.0.0-preview1-005977\ Microsoft .NET Core Shared Framework Host Version : 2.0.0-preview1-002111-00 Build : 1ff021936263d492539399688f46fd3827169983
      
      





さまざまな情報がたくさんあり、その中には2つの異なるバージョン番号があります。









しかし、これらのバージョン番号は少し誤解を招くものです。 また、.NET Core SDKバージョン1.0と.NET Core Runtimeバージョン1.1.1および1.0.4がコンピューターにインストールされていますが、それらに関する情報はありません。







.NET Coreランタイムバージョンについて



.NET Coreの利点の1つは、相互に影響を与えることなく、複数のバージョンのランタイムを並行してインストールできることです。 これは、.NET Frameworkのインストール方法とは異なります。 .NET Framework 4.5、4.6、および4.7を並行してインストールすることはできません。バージョン4.7は以前のバージョンを置き換えます。







C:\Program Files\dotnet\shared\Microsoft.NETCore.App



フォルダーに移動すると、どのバージョンの.NET Coreランタイムが既にインストールされているかを確認できます(ポピーでは/usr/local/share/dotnet/shared/Microsoft.NETCore.App



を調べる必要があり/usr/local/share/dotnet/shared/Microsoft.NETCore.App



)。 ご覧のとおり、コンピューターには3つのバージョンがインストールされています。













次の質問は、アプリケーションを起動するときにどのバージョンのランタイムが使用されるかをどのように知るかです。







すべてが非常に簡単です: .csproj



ファイルで目的のバージョンを指定する必要があります!







たとえば、.NET Core 1.1プロジェクトでは、 <TargetFramework>



パラメーター(または複数の異なるバージョンのプロジェクトを<TargetFrameworks>



場合は<TargetFrameworks>



)をnetcoreapp1.1



ます。







 <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp1.1</TargetFramework> </PropertyGroup> </Project>
      
      





この場合、アプリケーションは.NET Coreバージョン1.1.1を使用します(上記のインストール済みバージョンのリストを参照)。 <TargetFramework>



netcoreapp1.0



設定すると、バージョン1.0.4が使用されます。







.csproj:



ファイル.csproj:



ランタイムバージョン2.0 preview 1



を使用するASP.NETアプリケーションの場合、次のようになります。







 <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.0</TargetFramework> <UserSecretsId>aspnet-v2test-32250BD7-D335-414A-A537-53B40874D211</UserSecretsId> </PropertyGroup> <ItemGroup> <Folder Include="wwwroot\" /> </ItemGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0-preview1-final" /> </ItemGroup> </Project>
      
      





.csproj



ファイルでは、 .csproj



<TargetFramework>



指定され、対応する最大バージョンが使用されます(コンピューターでは、これは2.0.0-preview1-002111-00



)。







SDKバージョンについて



.NET Coreランタイムのバージョンに関するすべてを理解したことを願っています。 ただし、SDK / CLIバージョンについては未解決の質問があります。







C:\Program Files\dotnet\sdk



フォルダーに移動すると(macsでは/usr/local/share/dotnet/sdk



を確認する必要があり/usr/local/share/dotnet/sdk



)、コンピューターにインストールされているSDKのバージョンが表示されます。 ご覧のとおり、 1.0.0



2.0.0-preview1-005977



2つのバージョンがインストールされています。













大まかに言うと、SDKはアセンブリ関連のコマンドを提供するものです: dotnet new



dotnet build



dotnet publish



など。







一般に、プロジェクトの作成に使用されたバージョンよりも大きいSDKの任意のバージョンを使用して、プロジェクトをビルドできます( dotnet build



およびdotnet publish



)。 したがって、SDKバージョン2.0を使用して、SDKバージョン1.0で作成されたプロジェクトを操作できます。







つまり、ほとんどの場合、すべてのプロジェクトに最新バージョンのSDKを使用できます。 たとえば、 project.json



ファイルを使用してproject.json



をビルドする場合は、別のバージョンのSDKが必要になる場合があります(この場合、RC2 SDKが必要になります)。







SDKの現在のバージョンは、 dotnet new



コマンドで作成された新しいプロジェクトにも影響します。 SDKバージョン2.0プレビュー1を使用する場合、 netcoreapp2.0



に基づくアプリケーションを取得しますnetcoreapp2.0



バージョン1.0を使用する場合、 netcoreapp2.0



に基づくアプリケーションを取得します!







次の質問は、使用するSDKのバージョンをアプリケーションに伝える方法です。







global.jsonファイルでSDKバージョンを選択します



global.json



ファイルには、使用するSDKのバージョンを設定するだけの非常に単純な形式があります。







 { "sdk": { "version": "1.0.0" } }
      
      





以前は、 global.json



ファイルはソリューションのソースコードでフォルダーを指定するためにglobal.json



使用されていましたが、この機能は将来のバージョンで削除される予定です。

dotnet new



またはdotnet build



を開始dotnet build



global.json



は最初に現在のフォルダーで、次にすべての親フォルダーでglobal.json



探します。 global.json



見つかった場合(およびそこにリストされているSDKバージョンが利用可能です)、このバージョンは、このフォルダー内で実行されるすべてのSDKコマンドに使用されます。 単一のglobal.json



ファイルが見つからなかった場合、SDKの最新バージョン(私の場合は2.0.0-preview1-005977



が使用されます。







個人的には、上記のglobal.json



Projects



フォルダーに入れているため、その中にある既存のプロジェクトはすべて、SDK 1.0.0を引き続き使用します(そこで作成するすべての新しいプロジェクトも同様)。 次に、 netcore20



サブフォルダーを作成し、次のglobal.json



を追加しました。 その中に、ASP.NET Core 2.0の予備バージョンで「プレイ」したいすべてのプロジェクトを配置します。これにより、問題が発生するリスクはありません!







 { "sdk": { "version": "2.0.0-preview1-005977" } }
      
      





おわりに



バージョン管理は、最近まで.NET Coreの問題の1つでした。 将来的にすべてのバージョンを揃えることで、状況が確実に単純化され、願わくば、これにより混乱が減ることが期待されます。 ただし、ランタイムバージョンとSDKバージョンの違いを理解してみる価値はあります。 この投稿がこれらの問題のいくつかを明らかにする助けになることを願っています!








All Articles