2023年9月29日 修正
業務内容漏洩リスクを指摘されたため、質問の内容を伏せさせていただきます。
協力していただいた方々、大変申し訳ありません。
動作はできたもののまだテストはしていない状況です。
テストが通り世に出回りましたら、ブログなど何らかの方法で公開させていただきます。
正規の方法ではないので、何が起きるかわかりません。
このままだと工数がかかって MSDN サブスクリプションを購入して VB6 の開発環境を手に入れたほうが安かった!なんてことになりかねないと思いますよ。
とりあえず、普通のC#プロジェクトから MailKit を呼び出して動くかどうか確認してみては?
VisualStudio6はあるのですが、このプログラムで使用しているサードパーティモジュールがもう手に入らなくて、開発環境の構築ができないのです。
>普通のC#プロジェクトから MailKit を呼び出して動くかどうか確認してみては?
これは既に動作確認済みです。
それをDLL化してVB6から呼び出すのに手こずっているわけです。
>このプログラムで使用しているサードパーティモジュールがもう手に入らなくて、開発環境の構築ができないのです。
開発環境に制限がかかるタイプのやつですか。
VB.NET に移行して別のモジュールにも差し替えができないってとこですかね。
まぁそれは置いといて、コンソールアプリを作ってキックするくらいしか手がないんじゃないですかね・・・
応答がありませんが、どうなったんでしょうか?
正規でない方法を紹介しちゃったので行く末が気になるところです。
すみません、週末からトラブルで別対応に追われていまして、今日か明日辺りから再開する予定です。
そうですか、お疲れ様です。
のんびり待つことにします。
同一プロセスで動く COM で MailKit が動くとは思えません。
アウトプロセスならワンチャンありそうですが、ちょっと面倒くさい手順があります。
https://seraphy.hatenablog.com/entry/2018/06/06/190923
「C#によるOut-Procサーバー(EXEサーバー)の作成について」に手順があります。(未確認)
私の知る限り「レガシーDLL」という言葉は存在しません。
質問内容に書かれている「レガシーDLL」とは何ですか?
COM や .NET の DLL と区別するために「レガシーDLL」という言葉を使っています。
結構一般的だと思いますよ。
回答になっていません。
どのようなDLLを「COM や .NET の DLL と区別するために「レガシーDLL」という言葉を使っている」のですか?
KOZ6.0さんは"「COM参照可能なDLL」と「.NET系のDLL」を区別するために「COM参照可能なDLL」の事を「レガシーDLL」という言葉を使って表現している"と書きたかったのでしょうか?
OLE, COM, .NET Framework, .NET Core, .NETなどの歴史的背景やWindowsに詳しくない人物が「レガシーDLL」という単語をみたときにすべての人が「COM参照可能なDLL」の事だとすぐに理解できますか?
ある程度知識ある人物が今回の質問内容を全て読むと「regasm.exe を利用している」という部分から「COM参照可能なDLL」と推測できるという程度では無いでしょうか?
「.NET系のDLL」が「レガシーでは無いモダンなDLL」とするなら「Win32のDllMainだけが存在するDLL」も「レガシーDLL」と判断される恐れはありませんか?
あいまいな表現を利用するぐらいなら最初から「COM参照可能なDLL」と表現すべきではないでしょうか。
また、Googleで「レガシーDLL」と検索しても情報が出ません。
情報が出なければ一般的では無いと考えるのが妥当ではないでしょうか。
KOZ6.0さんがが経験してきた現場では一般的かもしれません。
しかし、teratailのように誰でも閲覧できるような場所では一般的に利用される単語のみ利用すべきだと考えます。
あげあしを取るとか、攻撃したいのでは無いのです。
せっかく知見を共有してくださってるのですから誰にとっても伝わりやすい書き方や単語を利用すべきだと考えています。
同様の問題を抱えた別の人物がteratailのこの質問にたどり着いた時に「レガシーDLLってなんだろう。Googleで調べても出てこない。」となりませんか?
いまのところ、DLL って大きなくくりでいくと3種類しかないと思います。
(1) 旧来のDLL (COM=ActiveX.dll登場以前のdll)
(2) COM(ActiveX.dll)
(3) .NET 系のDLL
(1) を他と区別するのに、「レガシー」と呼んでいます。
現場というよりは、掲示板でよく見かける表現です。
「レガシーな DLL」とか、「レガシー API」とかですね。
マネージ/アンマネージというくくりもありますが、ActiveX.dll もアンマネージですからちょっと違うし、他にいい表現がありません。
GKL さんは、いい呼称をご存じですか?
もう一度私の回答を全てお読み下さい。
>あいまいな表現を利用するぐらいなら最初から「COM参照可能なDLL」と表現すべきではないでしょうか。
>せっかく知見を共有してくださってるのですから誰にとっても伝わりやすい書き方や単語を利用すべきだと考えています。
また、「COM=ActiveX.dll」とはどういう意味ですか?
「COM=ActiveX.dll」というファイル名ですか?
「COM」と「ActiveX.dllというファイル」は同じという意味ですか?
Windowsに「ActiveX.dll」というファイルは標準で存在しませんが何のファイルですか?
それとも「COM」と「ActiveX」は同じであると表現したかったのでしょうか?
COMとActiveXは関係があるとはいえ別物です。
なぜ「COM」と「ActiveX.dll」が等号記号で結ばれているのでしょうか?
「DLL」と「dll」で大文字と小文字の差は何ですか?
何を意図して書き分けたのですか?
「マネージ/アンマネージ」ではなく「マネージド/アンマネージド」と表現したかったのでしょうか?
また、KOZ6.0さんが掲示板でよく見かけるかどうかは正直な所どうでもいいです。
現時点でGoogleなどの検索エンジンで検索した時にWikipediaやIT用語辞典やMSDNなどで「レガシーDLLの定義は~です」という情報が出ますか?出ませんよね。
定義がはっきりしていない単語を使うべきでは無いです。
>同様の問題を抱えた別の人物がteratailのこの質問にたどり着いた時に「レガシーDLLってなんだろう。Googleで調べても出てこない。」となりませんか?
本題とは異なる内容が続くのでこれ以上返信しません。
もう一度引用しますが以下の意図で私はあえて指摘しています。
>せっかく知見を共有してくださってるのですから誰にとっても伝わりやすい書き方や単語を利用すべきだと考えています。
レガシーってのがダメなら何と呼ぶべきですか?ってのをお聞きしたかったんですが、答えをもらえませんでしたね。
ひとつ訂正しておくと、レガシーっていってるのは「COM参照可能なDLL」ではないです。
DLLExport.BAT で作られた、COMでも.NET でもない DLL です。
stackoverflowで見かけるのは、
普通のDLL:"unmanaged dll" "native dll"
COM DLL:"com dll" "com library"
.NET DLL:"managed dll" ".net dll"
辺りでしょうか。
"legacy dll"でも80件HITしたので、別に全く使われていない訳ではないようです。
修正を求めるのであれば、
「...のような呼称が一般的なので、そちらを使われた方がよいかもしれません」
というような言いまわしをされた方が心象がよろしいかと思われます。
回答1件
あなたの回答
tips
プレビュー