これらの重要な設定が適切に行われていない場合は、自己責任で.NET5をアップグレードしてください。

11 11月11日はeコマースカーニバルの日であり、.NET5が正式にリリースされる日でもあります。マイクロソフトの公式ウェブサイトやその他のアップデートを心配して更新しているので、初めて投げ始めたいと思います。以前、スコットハンターはブログで次のように誓っていました。.NETCore3.1はスムーズに.NET5に移行したため、同じ日に宝物プロジェクトをアップグレードしました。その結果、大きな穴も小さな穴もありませんでした。完了するまでに1日かかりました。詳しく見てみましょう。ストローク、構造の参照点を提供します。

背景紹介

アップグレードされたプロジェクトは、以前はGithubでオープンソースであり、週に300の星が追加されました。何らかの理由で閉鎖されましたが、非常に難しいと考えられています。これは違います。NET5がリリースされたばかりで、アップグレードが初めて開始されました。

プロジェクトはWeChatアップルトモールです。バックエンドはマイクロサービスアーキテクチャによってサポートされています。Ocelotゲートウェイ+領事サービス登録ディスカバリー+コアWebApi + gRPC + IdentityServer4はすべて配置されており、全体はまだ比較的複雑です、[MongoDB](https://cloud.tencent.com/product/mongodb?from=10680)、[Redis ](https://cloud.tencent.com/product/crs?from=10680)、RabbitMQも配置され、.NET Core3.1 upgrade.NET5の過程で、さまざまなピットが発生します。

VSアップグレードピット

アップグレードの最初の落とし穴は、VSツールのアップグレードです。以前は、.NET5プレビューバージョンのRC1とRC2はVisual Studio 2019プレビューを使用していましたが、現時点では、.NET5の公式バージョンでは、Visual Studio 2019のみをV16.8にアップグレードする必要があることがわかり、熱心にアップグレードされました。ヒット:Visual Studioインストーラーは、ネットワークが接続されておらず、ダウンロードできないことを要求します。もちろん、これはネットワークの問題ではありません。実際、DNS解決の問題です(一部のユーザーが遭遇します。解決策は、コンピューターのDNSを8.8.8.8に設定することです)が、結局のところ、公式のMicrosoft同期では不十分だと考えて、11日の早朝でした。 、ツールの変更を選択した後、直接Linuxに移動し、VSコードを使用してアップグレードします。これにより、以下に環境ピットの第2の波があります。

**経験:**ネットワークが接続されておらず、ダウンロードできないことを示すVisual Studioインストーラーが表示された場合は、現在のコンピューターのDNSを8.8.8.8に設定できます。

Linux環境ピット

Linux環境でVSコードを開発する前は、よく知っていたのですが、今回は.NET5へのアップグレードを考えていたので、LinuxシステムをCentOS7からCentOS8に簡単に変更して、ゴージャスな落とし穴がありました。たとえば、CentOS8のネットワークカードの名前がens33からeth0に変更され、iptablesの代わりにnftablesが使用されています。さまざまな小さな変更を防ぐのは困難です。その後、最新バージョンのdockerには、以前のコマンドからの小さな変更がいくつかあり、以前に編成されたLinux + Docker操作ノートでさまざまな障害が発生します。 、数時間前後に投げます。

もちろん、環境は単なる環境であり、トスの後に通過します。コード移行レベルのピットは、まだ発見されていないものがいくつあるかわからないため、最も厄介です。

. NET5移行ピットピット

プロジェクトを.NETCore3.1から.NET5にアップグレードするのは非常に簡単です。global.jsonでSDKバージョンを3.1から5.0にアップグレードしてから、TargetFrameworkをnetcoreapp3.1からnet5.0に変更します。完全に問題のないクラスライブラリの名前付けの変更もいくつかあります。宇宙で最初のIDEのスマートプロンプトは簡単に解決できます。ただし、実際のプロジェクトの移行の過程で、さまざまな小さな問題が発生しました。

1

Swaggerは、デフォルトでCore WebApiフレームワークテンプレートプロジェクトに統合されています。これは新しい追加ですが、以前のプロジェクトにはいくつかのカスタム構成と拡張機能があり、これも競合の原因でした。

2

IdentityServer4のサードパーティフレームワークバージョンがアップグレードされ、APIが大幅に変更され、多くのコードを変更できません。このポットは.NET5ではありませんが、アップグレードプロジェクトでも発生します。

3

C#9を試すのに少し時間がかかり、ネイティブint、パターンマッチングの改善、パターンマッチングの改善など、新しい構文の新機能を体験したかったのですが、何度か試してみました。

4

プロジェクトのアップグレード後に見つかったバグで、DateTimeの値は毎日変更されます。ASP.NETCore3.1以前では、DateTimeはサーバーの現地時間にバインドされ、5.0以降はDateTimeはUTCTimeにバインドされます。

Recommended Posts

これらの重要な設定が適切に行われていない場合は、自己責任で.NET5をアップグレードしてください。