.net core 3.0とは?.net core 3.0 から.net core3.1に移行する方法や注意点を解説!
- システム
エンジニア - .net core 3.0を.net core 3.1に移行するとき、どのようなことに注意すればいいですか。
- プロジェクト
マネージャー - 以前のバージョンに対応していない機能があるので注意が必要です。
.net core 3.0とは?
「.net core 3.0」とは、Microsoftがリリースしたオープンソースのソフトウェアフレームワーク.NET Coreシリーズのひとつです。
.net coreシリーズはWindows専用の「.NET Framework」とは異なり、様々なOSに対応しているため、クロスプラットフォームで動作するのが特徴です。また、SDKも無料で配布されていて、VisualStudioがあれば簡単にアプリケーションを制作できます。
しかし、.net core3.1や.NET 5がリリースされているので、新しく開発する場合は特に.net core 3.0を使う必要はないでしょう。
3.0から3.1の移行はそれほど難しくないので、3.1に移行することをおすすめします。
.net core 3.0 から.net core3.1に移行するには?
様々な方法がありますが、バージョンアップ自体は難しくありません。注意する点は変更点を知っておくことぐらいでしょう。
かつて「.net core 2.2」から「.net core 3.0」にバーションアップする際は多かった修正も、「.net core 3.0」から「.net core 3.1」に移行する場合は、C#的にはそれほど変更はありません。
ビルドが通れば問題が出にくいので、試しにバージョンアップしてからビルドしてみると良いでしょう。
.net core 3.0から.net core 3.1に移行する必要はあるのか?
.net core 3.1は2022年までの長期保証(LTS)版なので、特に理由がなければ.net core 3.1に移行するケースがほとんどです。
既に.NET 5が出ていますが、こちらはLTS版ではないので.NET 6を待つのも方法の一つです。ただし、net core 3.1の保証もいずれは終了するので、.NET 5の挙動を確認するのも良いですが、開発する際は用途に応じてSDKをダウンロードしましょう。
.net core 3.0から.net core 3.1に移行するときの注意点
移行の際の注意点は、以前のバージョンに対応していない機能があることです。
変更点は大きく分けてSameSiteとMSBuild、そしてWindowsフォームの影響の3点です。いずれも対処はそれほど難しいものではなく、SameSite以外は、特に意識しなければ使っていない人がほとんどでしょう。
簡単に説明すると、Googleのブラウザのクッキーに関する仕様変更とビルドと、表示関係に関する変更です。それぞれの対処法を次項で解説します。
SameSiteの移行の対処方法とは
この修正は、GoogleによるCookieの使用の改変により大きな仕様変更があったもので、Edge以外でのブラウザは新しい値を受けると動作が停止する可能性があります。
.net core 3.0からの変更で気をつけるべき部分はこの程度でしょう。
この対処法としては、if関数 if (options.SameSite == SameSiteMode.None)を記述して、該当する値があった時に例外処理を書くことで回避できます。 公式サイトの引用を参考に修正しましょう。
なお、公式サイトでは、「Startup.cs」 を直接修正することが推奨されています。
C#
———
private void CheckSameSite(HttpContext httpContext, CookieOptions options)
{
if (options.SameSite == SameSiteMode.None) {
var userAgent = httpContext.Request.Headers[“User-Agent”].ToString();
if (/* UserAgent doesn't support new behavior */){
options.SameSite = SameSiteMode.Unspecified;
}
}
}
public void ConfigureServices(IServiceCollection services)
{
services.Configure(options =>
{
options.OnDeleteCookie = cookieContext =>
CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
options.OnAppendCookie = cookieContext =>
CheckSameSite(cookieContext.Context, cookieContext.CookieOptions);
options.MinimumSameSitePolicy = SameSiteMode.Unspecified;
});
}
public void Configure(IApplicationBuilder app)
{
app.UseAuthentication();
app.UseCookiePolicy();
}
———
あるいは、動作を無視するオプトアウト機能を使うこともできます。
Microsoft.AspNetCore.SuppressSameSiteNone 互換性スイッチを使用するとASP.NET Core Cookieを無視できます。
プロジェクトの runtimeconfig.template.json ファイルに以下のJSONを記述すればオプトアウトすることができます。
JSON
——-
{
“configProperties”:
{
“Microsoft.AspNetCore.SuppressSameSiteNone”: “true”
}
}
———
MSBuildの変更に対する対処法とは
MSBuildは、パッケージの依存関係の参照の簡略化を目的とした変更が行われました。3.1.4からの変更で、RunResolvePackageDependencies ターゲットから最上位のパッケージ参照だけが提示されるように変更されています。
必要のない参照をビルドしないようにしてくれる機能なので、あまり気にすることはないでしょう。
しかし、これで何かしらの不具合が出た場合など、3.0以前の使用に戻してみたいという時には設定が必要です。
その場合はプロジェクトファイルを開き、 EmitLegacyAssetsFileItems プロパティを true に変更すると元の設定に戻ります。
Windowsフォームの変更に対する対処法とは
こちらは、.NET Framework 2.0で導入されたような古いUIの変更です。
もともと非推奨のフォームで、3.0時点でデザイナーツールボックスから選択できないようになっています。そのため、3.0での開発をした場合は、ほぼ変更点はないでしょう。
ただし、古いアプリケーションのアップデートの場合は修正が必要になるケースがあります。
代価できる新しいメソッドが準備されていますので、もしエラーが発生した場合は、以下のフォーム変更に関するMicrosoft公式ページを参考にひとつひとつ代価する必要があります。
3.0から3.1にバージョンアップする方法
変更点が確認できれば、バージョンアップはそれほど難しいものではありません。
まず、マイクロソフト公式ページからSDKをダウンロードします。VisualStudioやVisualStudio Codeのバージョンは最新のものにしましょう。
プロジェクトのプロパティを開き、アプリケーションタブの対象フレームワークを3.1に切り替えます。
この時、直接ターゲットファイルを書き換えても構いませんが、初心者にはとっつきにくいのでVisualStudioを使用すると楽に行えます。なお、直接編集するときはターゲットフレームワークを編集していきます。
diff
———
- < TargetFramework>netcoreapp3.0< /TargetFramework>
+ < TargetFramework>netcoreapp3.1< /TargetFramework>
———
global.jsonに依存している場合はそちらに書き換えましょう。
diff
———
{
“sdk”: {
- “version”: “3.0.101”
+ “version”: “3.1.101”
}
}
______
また、パッケージを参考にしている場合も各パッケージを3.0から3.1に対応させましょう。
プロジェクトファイルの各Microsoft.AspNetCore.* パッケージを参照し、Versionを3.1.以降の新しいものにします。
Version=“3.0.x”と書かれたものをVersion=“3.1.x”にします。xの部分は置き換えたいバージョンの数字を入れ替えてください。特に3.1内のバージョン違いで不具合があることは報告されていないので3.1の最新版のv3.1.12SDKをダウンロードして書き換えた方が良いでしょう。
———
< ItemGroup>
- < PackageReference Include=“Microsoft.AspNetCore.Mvc.NewtonsoftJson” Version=“3.0.0” />
- < PackageReference Include=“Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation” Version=“3.0.0” Condition=“'$(Configuration)' == 'Debug'“ />
+ < PackageReference Include=“Microsoft.AspNetCore.Mvc.NewtonsoftJson” Version=“3.1.12” />
+ < PackageReference Include=“Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation” Version=“3.1.12” Condition=“'$(Configuration)' == 'Debug'“ />
< /ItemGroup>
———
dockerを使用する場合も3.1に対応させましょう。
コンソールからプルしてください。
docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
これでバージョンアップが可能です。ビルドしてみてエラーが出たら変更点の違いを参考に修正すれば移行が完了します。このほか、XMLに埋め込んでいる場合なども修正すると良いでしょう。
変更点があまりにも多すぎる時はバージョンアップしない手もありますが、サポートが終了すればアプリを使用する際に動作に不具合が出る可能性も出てきます。
長期的なアプリケーションの提供をする場合は積極的にバージョンアップについての情報を仕入れて開発しましょう。
ここでは割愛しますがGitでバージョン管理をしているのであれば、ブランチを分けたり変更を巻き戻したりできますので、併せて使用すると良いでしょう。
面倒であれば、バージョンを一斉検索して問題がなさそうなら置換してしまっても良いでしょう。不具合が出たら元に戻せば良いので、後学のためにもバージョンアップを試してみることをおすすめします。
- システム
エンジニア - net core 3.0のバージョンアップの方法、よく分かりました。
- プロジェクト
マネージャー - ご紹介したことに注意してバージョンアップしてください。
.net core 3.0 についてのまとめ
.net core 3.0は新しいバージョンである3.1や.NET5への移行がそれほど難しくないSDKです。
3.1への変更はブラウザ上の仕様変更もありますので、3.0のデバッグでエラーが出ていなくても、ブラウザ上で動作に不具合が出る可能性があります。
修正点もそこまで重くないことを考えれば、今からWebアプリケーションの開発をされる方であれば、あえて3.0を使う必要はないので.NET5や.net core 3.1を使った方が良いでしょう。
また、すでに3.0で制作している方がバージョンアップをしたい場合は、本記事やMicrosoft公式ページを参考にしてみてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)