11
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

.NET Framework から .NET Core への移植

Posted at

移植するアプリケーションについて

シリアル通信を行い、通信内容を解析、結果を画面表示するようなアプリケーションで、
SerialPort クラスを使用。

事前準備

  1. .NET Core環境を以下の記事で構築。
    https://qiita.com/takmot/items/19fab3a4b89a33bb8930

  2. .NET Framework環境としてVisual Studio 2019をインストール。

  3. Visual Studio 2019上でアプリケーションがビルド、起動できることを確認。

移植手順

以下の公式ドキュメントを参考に進める。
https://docs.microsoft.com/ja-jp/dotnet/core/porting/

1. Visual Studio の変換ツールを使用してpackages.config の依存関係を PackageReference 形式に変換

  1. Visual Studio 2019上でpackages.configファイルを右クリックし、packages.configをPackageReferenceに移行するを選択する。
    1.png

  2. OKを選択。
    2.png

  3. 完了するとソリューションファイルと同じパスにMigrationBackupフォルダが出来上がる。その中のNuGetUpgradeLog.htmlを確認。成功している場合、以下のように表示される。
    5.png

  4. 再度Visual Studio 2019上でアプリケーションをビルドし問題ないことを確認。

2. プロジェクトファイルを.NET Core形式に変換

プロジェクトファイルの変換にはdotnet try-convertを使用する。
github:https://github.com/dotnet/try-convert/releases

  1. githubページのHow To Installに従って以下でtry-convertをインストールする。

     dotnet tool install -g try-convert
    

    インストールが完了すると以下のように表示される。

    9.png

  2. プロジェクトファイルの変換

  3. プロジェクトファイルを対象とする場合

       try-convert -p <.csproj のファイルパス>
    
  4. ソリューションファイルを対象とする場合

       try-convert -w <.sln のフォルダパス>
    
  5. 完了すると以下のように表示される。
    10.png

3. SerialPort クラスの対応

上記1,2で一旦変換は完了したが、.NET Coreでビルドdotnet buildを行うとエラーが発生。

    型名 'SerialPort' は名前空間 'System.IO.Ports' に見つかりませんでした。

以下の公式ドキュメントを確認すると、.NET Core 3.1ではSerialPort クラスは対応しておらず、.NET Platform Extensionsのページにリダイレクトされる。
https://docs.microsoft.com/ja-jp/dotnet/api/system.io.ports.serialport?view=dotnet-plat-ext-3.1&viewFallbackFrom=netcore-3.1

Windows 互換機能パックを以下ページに従ってインストール。
https://www.nuget.org/packages/Microsoft.Windows.Compatibility

    dotnet add package Microsoft.Windows.Compatibility --version 3.1.1

これでSerialPortのエラーが解消しビルドが通ることを確認。

11
17
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?