V1.1 から V2.0 へのエクステンションの移行
Next Design V2.0 では、.NET DLL によるエクステンションの実行メカニズムに影響する次の変更を行いました。
- アプリケーションの動作フレームワークを .NET Framework 4.6.2 から .NET Core 3.1 に変更しました
- エクステンションのライブラリロード機構を変更しました
これらの変更により、V1.1 で開発したエクステンションを V2.0 で使用するための移行が必要となります。
info
- 移行なしでも V1.1 のエクステンションが動作する場合がありますが、エクステンションの意図しない動作や、将来のバージョンアップに備えるためにも移行することを検討してください。
エクステンションの .NET Core への移植
多くのエクステンションは、.NET Framework から .NET Core に比較的簡単に移植できます。
ここでは、Visual Studio を用いたライブラリ移植のシナリオを説明します。
info
- V2.0 ではより簡単にエクステンションを開発できるコマンドラインツールを提供しています。
- ここで説明する移植先のプロジェクトの作成は、コマンドラインツールで代替することもできます。
- 詳しくは、NDExtを参照してください。
- .NET Core 3.1 をターゲットとする新しいプロジェクトを作成します。
.NET Core 3.1 プロジェクトを作成する
.NET Core 3.1 プロジェクトを作成するには、Visual Studioのプロジェクト作成時に次の手順で行います。
ターゲットフレームワークの選択
- プロジェクト作成時の追加情報で、ターゲットフレームワークに
.NET Core 3.1
を選択してください。
- 作成したプロジェクトに NuGet を用いて、以下の依存パッケージを追加します。
- NextDesign.Desktop
NuGetで依存パッケージを追加する
プロジェクトへの依存パッケージの追加は次の手順で行います。
操作手順
- プロジェクトのコンテキストメニューから NuGet パッケージの管理を起動します。
- 参照タブで
NextDesign.Desktop
を検索して選択します。 - インストールボタンを押下してインストールを開始します。
tip
- 現在の NextDesign.Desktop パッケージの最新バージョンは
2.0.0.11125
です
元のエクステンションに 依存ライブラリがある場合は、それらの参照を追加します。
- NuGet パッケージによる参照の追加
- 依存パッケージが .NET Core 3.1 に未対応の場合は、.NET Core 3.1 をサポートするバージョンにバージョンアップしてください
- ほとんどの場合において、.NET Core 3.1 に対応するバージョンが提供されています
- ライブラリ参照による参照の追加
- 依存ライブラリが .NET Core 3.1 に未対応の場合は、ライブラリ提供元より .NET Core 3.1 に対応する新しいライブラリを入手して更新してください。
- プロジェクト参照による参照の追加
- 依存先プロジェクトが、.NET Core 3.1 または .NET Standard 2.0 でない場合は、依存先プロジェクトも移植(または、移行)してください。
- NuGet パッケージによる参照の追加
作成したプロジェクトに、元のエクステンションのソースコード、マニフェストファイル、リソースファイルを追加します。
- .NET Core プロジェクトの場合は、プロジェクトフォルダ配下にファイルを配置すれば自動的に追加されます
- AssemblyInfo.cs ファイルは移行不要です
- マニフェストファイルやその他のリソースファイルのプロパティは必要に応じて元のエクステンションと同様に設定してください
作成したプロジェクトのプロパティでアセンブリバージョン等の各種情報を設定します。
アセンブリ名、規定の名前空間を指定する
Visual Studio プロジェクトのプロパティの`アプリケーション`で設定します。
note
- 元のエクステンションと同様に設定します。
バージョン、作成者を指定する
Visual Studio プロジェクトのプロパティの`パッケージ`で設定します。
note
- 元のエクステンションの AssemblyInfo.cs の定義内容を移行します
エクステンションが次のV2.0で変更されたAPIを使用している場合は、該当箇所を修正します。
エクステンションが次のV2.0で利用できない機能/APIを使用している場合は、該当箇所を修正します。
- V2.0で削除したAPI
- 統廃合予定のAPI
- static変数によるエクステンション間の情報共有
- V2.0 では、エクステンションロード機構の変更により、static変数によるエクステンション間の情報共有ができません。
- 移行対象のエクステンションでstatic変数によるエクステンション間の情報共有を行っていた場合は、代替手段を検討してください。
依存パッケージのバージョンアップによりビルドが通らない箇所があれば修正します。
tip
- .NET Framework から .NET Coreへうまく移行できない場合は、以下のページが参考になります。
V2 エクステンションのビルドと配布
.NET Core ライブラリプロジェクトは、ビルド時に NuGet によりパッケージ参照したライブラリを出力しません。
そのため、エクステンションを配布する際には、エクステンションの依存ライブラリを収集する必要があります。
ここでは、依存ライブラリの収集方法を説明します。
info
- コマンドラインツールでエクステンションの配布パッケージを作成することができます。
- 詳しくは、NDExtを参照してください。
- 依存ライブラリの収集はdotnet publish コマンドを使用します。
- Visual Studioを使用する場合は、ビルドイベントでコマンドを実行すると便利です。
- プロジェクトのプロパティで、
ビルド イベント
を開きます。 ビルド後イベントのコマンドライン
に以下のコマンドを設定します。dotnet publish --no-build
- ${ビルドの出力フォルダ}/publish フォルダに依存ライブラリ、およびアセンブリメタデータの記述ファイルが出力されます。
- プロジェクトのプロパティで、
- Visual Studioを使用する場合は、ビルドイベントでコマンドを実行すると便利です。
tip
- ビルド後イベントで dotnet publish コマンドを実行する場合は、必ず"--no-build"オプションを指定してください。
- "--no-build"オプションを指定していない場合、ビルドプロセスが無限ループします。
- プロジェクトのビルドを実行します。
tip
- エクステンション側で特別な理由がない限りは、ビルドのプラットフォームには"Any CPU"を指定することを推奨します。
${ビルドの出力フォルダ}/publish フォルダ以下の配布に不要なライブラリを削除します。
- NextDesign.Core.dll
- NextDesign.Desktop.dll
- シンボル(.pdb)ファイル
publish フォルダの全てのファイルを配布してください。
- アセンブリメタデータ記述ファイル(.deps.json)を必ず含めてください。
- マニフェスト、その他必要なファイルがあれば、ここに含めてください。