既存の.NET Frameworkクラスライブラリを.NET Standardクラスライブラリにするには(動くとは言ってない
.NET Coreによって様々なプラットフォームでC#のプログラムが動くようになりました。 これまで.NET Framework用として作ってきた、もしくは世の中の有志たちが公開してきたライブラリなどの資産を活用しない手はありません。
そこで、既存の.NET Frameworkクラスライブラリを各プラットフォームで動作するように.NET Standardクラスライブラリに移行するということをやってみます。
手順概略
まずは対象のクラスライブラリのプロジェクトをVisual Studio 2019で開きます。
.NET Standardクラスライブラリの新規プロジェクトを作成します。
次にクラスライブラリのプロジェクト内のフォルダ、ファイルをすべて選択します。
選択したフォルダ、ファイルを先程作成した.NET Standardクラスライブラリプロジェクトにドラッグアンドドロップします。
.NET Standardクラスライブラリプロジェクトをビルドします。
エラーが出たら潰します。
やってみる
まずは.NET Frameworkクラスライブラリのプロジェクトを用意します。
自分の手元のプロジェクトのcsproj
ファイルをテキストエディタで開いてみると、以下のようにターゲットフレームワークが4.5.2
になっていることが確認できました。
...省略 <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{A377831F-7F95-4EF8-B1B3-7CAA72628E00}</ProjectGuid> <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>SentenseSeparator</RootNamespace> <AssemblyName>SentenseSeparator</AssemblyName> <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion> <FileAlignment>512</FileAlignment> </PropertyGroup> ...省略
ちなみに、2017年6月の代物でした。
さて、このプロジェクトをVS2019で開きます。 はじめはプロジェクトのプロパティからターゲットフレームワークを変更できるのかと思いましたが、そこに.NET Standardの選択肢はありません。
そこで.NET Standardのプロジェクトを作成し、そこにソースコードをまるっとコピーするのです。
ソリューションエクスプローラから[追加] > [新しいプロジェクト]を選択します。
新規作成するプロジェクトのテンプレートとして「クラスライブラリ(.NET Standard)」を選択します。
新しい.NET Standardクラスライブラリのプロジェクトが作成されました。
次に、.NET Frameworkプロジェクトでプロジェクトを構成するファイルやフォルダを選択します。 (フォルダもなくファイル1つだけなのでサンプルとしてはだめでした…。)
これを.NET Standardプロジェクト側にコピペまるっとコピペします。
ドラッグアンドドロップでも良いですし、Ctrl+C
、Ctrl+V
でも良いので、VS上でコピペします。
恥ずかしくもClass1.cs
などというファイル名なので上書き確認されたりしました。
あとは、このプロジェクトをビルドして、エラーを潰せば.NET Standardなクラスライブラリの完成です。