がっかりして、私は.NET Core3.1を.NET5に一晩アップグレードしました、そしてそれは落とし穴のように感じました!

11 11月11日はeコマースカーニバルの日であり、.NET5が正式にリリースされる日です。妻はゼロポイントの急上昇を待っていますが、マイクロソフトの公式ウェブサイトを更新して更新を待っているので、初めて投げ始めます。以前、スコットハンターはブログで.NET Core3.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に設定することです)が、結局のところ、それは11日の早朝であり、公式のMicrosoftだと思っていました。同期だけでは不十分でした。ツールを変更し、直接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にバインドされます。

.NET5プロジェクトの移行の戦いに来てください

そうしないかどうかはわかりませんが、投稿を読むことに頼るのは信頼できません。古いドライバーであると自称し、プロジェクトの移行を完了するのに10時間近くかかりました。隠れた穴があるかどうかはわかりません!現在、誰もがプロジェクトの.NET5への移行に直面しており、これらのピット体験もまれです。今夜8時に、共有、.NET5 +マイクロサービス+アプリレットの練習、.NET5戦闘の最初の波の完了、コードをスキャンしてグループに参加するためのライブブロードキャストを提供します。今夜お会いしましょう!

準備のサポート

この共有では、事前に.NET5関連の環境を準備するだけで済みます。VS201916.8のコミュニティ、プロフェッショナル、およびエンタープライズバージョンのインストールファイルと、対応するアクティベーションコードがここにパッケージ化されています。必要に応じて入手してください。

QRコードをスキャンして、サポート情報を受け取ります

Recommended Posts

がっかりして、私は.NET Core3.1を.NET5に一晩アップグレードしました、そしてそれは落とし穴のように感じました!