DOBON.NETプログラミング道掲示板

■34717 / 親記事)  VSプロジェクト作成方法の違いによる、プラグイン機能を持つアプリケーションへの影響について
  
□投稿者/ はると 一般人(1回)-(2021/05/11(Tue) 10:42:08)
  • アイコン環境/言語:[VS2019(VB)] 
    分類:[.NET] 

    はじめて投稿させていただきます。
    DOBONさんのサイトはよく参考にさせていただき、開発に大いに役立っています。

    以前、「プラグイン機能を持つアプリケーション作成」の記事を参考にさせていただき、動的プラグインを利用できるアプリケーションを作成しました。
    今回、新しく機能を盛り込むために、追加のプラグインを、プロジェクトの新規作成をする時に、VS2019(VB)のWindows Forms Appにて実施したところ、今回作成したプラグインが、定義された同一のインターフェイスの仲間として、リストアップできませんでした。
    試しに、プロジェクト作成をWindows Forms App(.Net Framework)から実施したものは、うまく読み込めます。
    この差異は、何にあるのか教えていただけませんか?

    なお、今回、別の不具合のため、Windows Forms App(.Net Framework)からのプラグイン作成では、要求する機能が使用できないため、「.Net Framework」からの作成ではなく、「.NET x.x」を使用したプロジェクトの作成が必要となっています。

    申し訳ありませんが、Windows Forms App(.Net Framework)からではない、「.NET x.x」を使用したプロジェクトで作成したプラグインを、「プラグイン機能を持つアプリケーション作成」の方法にて利用できるような解決策をご教授いただきければと思います。
マルチポストを報告
違反を報告
引用返信 削除キー/
■34718 / ResNo.1)  Re[1]: VSプロジェクト作成方法の違いによる、プラグイン機能を持つアプリケーションへの影響について
□投稿者/ 魔界の仮面弁士 大御所(1331回)-(2021/05/11(Tue) 19:05:31)
  • アイコンNo34717に返信(はるとさんの記事)
    > 以前、「プラグイン機能を持つアプリケーション作成」の記事を参考にさせていただき
    こちらの記事でしょうか。
    https://dobon.net/vb/dotnet/programing/plugin.html

    未検証で投稿してしまいますが、作成したプラグイン プロジェクトの
    <TargetFrameworks> はどうなっていますか?
    https://qiita.com/VBmouiya/items/cd2edab74a40152a9c6a
    http://sourcechord.hatenablog.com/entry/2019/12/18/004659
違反を報告
引用返信 削除キー/
■34719 / ResNo.2)  Re[2]: VSプロジェクト作成方法の違いによる、プラグイン機能を持つアプリケーションへの影響について
□投稿者/ はると 一般人(2回)-(2021/05/12(Wed) 07:32:52)
  • アイコンNo34718に返信(魔界の仮面弁士さんの記事)
    > ■No34717に返信(はるとさんの記事)
    >>以前、「プラグイン機能を持つアプリケーション作成」の記事を参考にさせていただき
    > こちらの記事でしょうか。
    > https://dobon.net/vb/dotnet/programing/plugin.html
    はい、この記事を参考にさせていただいております。


    > 未検証で投稿してしまいますが、作成したプラグイン プロジェクトの
    > <TargetFrameworks> はどうなっていますか?
    プラグインの方は、「.Net Framework」の場合、4.7.2
    「.Net Core」の場合は、5.0にてプロジェクトを新規作成しています。
    プラグイン呼び出し側のプロジェクトは、「.Net Framework4.7.2」です。


    > https://qiita.com/VBmouiya/items/cd2edab74a40152a9c6a
    > http://sourcechord.hatenablog.com/entry/2019/12/18/004659
    紹介させていただいたリンク先、まだ、じっくり確認できていませんが、取り急ぎ返信へのお礼と、上記質問への回答をさせていただきます。
違反を報告
引用返信 削除キー/
■34721 / ResNo.3)  Re[3]: VSプロジェクト作成方法の違いによる、プラグイン機能を持つアプリケーションへの影響について
□投稿者/ 魔界の仮面弁士 大御所(1333回)-(2021/05/12(Wed) 15:04:56)
  • アイコンNo34719に返信(はるとさんの記事)
    >> <TargetFrameworks> はどうなっていますか?
    > プラグインの方は、「.Net Framework」の場合、4.7.2
    > 「.Net Core」の場合は、5.0にてプロジェクトを新規作成しています。
    > プラグイン呼び出し側のプロジェクトは、「.Net Framework4.7.2」です。

    <TargetFramework> は単一ターゲット(Visual Studio から指定可能)で、
    <TargetFrameworks> は複数ターゲット(手動編集が必要)です。
    https://docs.microsoft.com/ja-jp/dotnet/standard/frameworks

    先に紹介した URL は複数のターゲットを指定するための実例ですが、
    単一ターゲットで構わないなら、TargetFramework のみあれば OK です。


    なお、プラグインが System.Windows.Forms 名前空間を含む場合には、
    .vbproj / .csproj に対して <UseWindowsForms>true</UseWindowsForms> を指定し、
    ターゲット プラットフォームに Windows 向けの TFM を指定する必要があります。

    すなわち「net5.0」や「net6.0」ではなく、
    「net5.0-windows7.0」「net5.0-windows」「net6.0-windows」などが必要になるということですね。
    (指定可能なターゲットは、SDK および Visual Studio のバージョンによって異なります)

    Visual Studio からプロジェクトを新規作成する際に、
    .NET 5 向けの「Windows フォーム クラス ライブラリ」と
    .NET 5 向けの「クラス ライブラリ」とが別々に存在していますが、
    その違いは上記の TFM と UseWindowsForms の有無に現れます。

    プロジェクト作成後は、「クラス ライブラリ」と「Windows フォーム クラス ライブラリ」の
    違いが分かりにくいですが、TFM の有無は、Visual Studio のプロジェクトのプロパティだけでは区別できないため、
    .vbproj / .csproj ファイルの XML 記述を直接読み取って判断してみてください。


    参考までに、.NET 5 の WinForm 用のプラグインサンプルを書いてみました。
    https://www.vb-user.net/junk/replySamples/2021.05.12.14.54/Dobon34717.zip
違反を報告
引用返信 削除キー/
■34723 / ResNo.4)  Re[3]: VSプロジェクト作成方法の違いによる、プラグイン機能を持つアプリケーションへの影響について
□投稿者/ Azulean 大御所(528回)-(2021/05/12(Wed) 22:13:19)
  • アイコンNo34719に返信(はるとさんの記事)
    > プラグインの方は、「.Net Framework」の場合、4.7.2
    > 「.Net Core」の場合は、5.0にてプロジェクトを新規作成しています。
    > プラグイン呼び出し側のプロジェクトは、「.Net Framework4.7.2」です。


    アプリ側(プラグイン呼び出し側)が .NET Framework なら、プラグインは .NET Framework で作る必要があります。


    .NET Core/.NET 5 系はオープンソース&クロスプラットフォームで再出発した経緯もあり、.NET Framework の後継ではありません。
    従って、.NET Framework 側から .NET Core や .NET 5 のアセンブリを読み込むことはできないはずです。

    試しに手元で読み込もうとすると、Assembly.GetTypes() で TypeLoadException がスローされています。



    今後:
    [1] アプリ側が .NET Framework のまま変更できないなら、.NET Framework で実現できる範囲でプラグインを検討してください。
    [2] アプリ側を .NET Core や .NET 5 に変更できるなら、両方合わせてください。
違反を報告
引用返信 削除キー/
■34724 / ResNo.5)  Re[4]: VSプロジェクト作成方法の違いによる、プラグイン機能を持つアプリケーションへの影響について
□投稿者/ はると 一般人(3回)-(2021/05/13(Thu) 11:33:19)
  • アイコンNo34721に返信(魔界の仮面弁士さんの記事)

    > 参考までに、.NET 5 の WinForm 用のプラグインサンプルを書いてみました。
    > https://www.vb-user.net/junk/replySamples/2021.05.12.14.54/Dobon34717.zip

    サンプルまで作成していただいてありがとうございます。
    理解するうえで大変に参考になります。
    まだ、完全に自分の中で消化できない部分があるので、理解しながら、元のプロジェクトへの実装を試みていきたいと思います。
    その中で、新たな疑問が出てくるかもしれませんが、とりあえず、「.Net Framework」と「Netx.x」が共存でき、同一の方法で呼び出せることがわかりましたので、一旦「解決済み」とさせていただきたいと思います。
    ありがとうございました。
解決み!
違反を報告
引用返信 削除キー/
■34725 / ResNo.6)  Re[4]: VSプロジェクト作成方法の違いによる、プラグイン機能を持つアプリケーションへの影響について
□投稿者/ はると 一般人(4回)-(2021/05/13(Thu) 11:37:49)
  • アイコンNo34723に返信(Azuleanさんの記事)
    返信ありがとうございます。
    魔界の仮面弁士さんの助言で解決できそうですので、もう少し頑張ってみます。
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -