作成日: 2024/05/22 最終更新日: 2024/05/22
文書種別
制限事項
詳細
以下のような方法でフォームを表示しようとすると、ライセンスエラーのダイアログが表示される場合があります。
- ターゲットCPUを「x86」に設定したクラスライブラリなどのプロジェクトで、メシウスの.NET製品を使用する
- 別プロジェクトのフォームで、1.を参照して使用する
- Visual Studio 2022のアウトプロセスデザイナで、2.のフォームを表示する
上記の動作は、Visual Studio 2022上で、32ビット参照のフォームをデザイン画面で表示する場合の制限事項となります。
32ビット(x86ビルド)のDLLを使用したフォームを、Visual Studio 2022でデザインする場合、以下のページで解説されているアウトプロセスデザイナ(FxDesignToolsServer.exe)を使用する必要があります。これはVisual Studioのプロセスとは別に実行されるデザイナアプリケーションです。
WinForms Designer Selection for 32-bit .NET Framework Projects
https://devblogs.microsoft.com/visualstudio/winforms-designer-selection-for-32-bit-net-framework-projects/
このアウトプロセスデザイナが、フォーム上で使用されているメシウス製品のコンポーネントを参照・実行しようとしたとき、ライセンスエラーのダイアログが表示されます。
メシウス製品のコンポーネントを参照・実行するには、対象のアプリケーションに、当該製品のライセンスを組み込む必要があります。これは、メシウス製品が使用している.NET Frameworkのライセンスプロバイダの仕様に基づくものです。
しかしながら、アウトプロセスデザイナにはメシウス製品のライセンスが組み込まれていないため、実行時にライセンスエラーのダイアログが表示されます。
また、以下のページによれば、アウトプロセスデザイナは、すべてのサードパーティーコントロールを処理できず、この機能を使用するとデータが失われる可能性があると説明されています。そのため、仮にライセンスの問題が解決できたとしても、それ以外に何らかの問題が発生する可能性があります。
Designer Selection Feature for .NET Framework Projects
https://github.com/dotnet/winforms/blob/main/docs/designer/designer-selection.md
Warning Since the out-of-process designer for .NET Framework projects cannot handle all third-party controls, there is a possibility of data loss on using this feature. Hence, we recommend that you create a backup of your project beforehand. Also, there is a difference in the way CodeDom parsing is handled between in-process and out-of-process designers. The out-of-process designer will likely make significant updates to the code behind file which might make it incompatible with in-process designer. This issue will be addressed in an upcoming release. |
回避方法
以下のような方法が考えられます。
- メシウス製品を使用したプロジェクトを、「AnyCPU」または「x64」でビルドする
- 開発時は一時的に、メシウス製品を使用したプロジェクトを「AnyCPU」でビルドし、アウトプロセスデザイナを使用しない
- Visual Studio 2022ではなく、Visual Studio 2019を使用する