配布用EXEでエラー

タグの編集
投稿者 エピ  (社会人) 投稿日時 2024/2/2 16:43:45
VB2017からVB2022へ移行をしています。
作成したプロブラムを発行でターゲットランタイムwin-x64,単一のファイル作成にチェックをし発行しています。
作成されたフォルダ内でEXEを実行すると動くのですが、EXEをデスクトップ等に置くと以下のメッセージが出てきます

アプリケーションのコンポーネントで、はんどるされていない例外が発生しました 以下省略
The type initializer for 'System.Data.SqlClient.TdsParser' threw an execption

sni.dll が同じフォルダ内にあれば問題ないのですが、ないと止まってしまいます。他のPCでも使用したいためこのdll無しで動くようにしたいのですが
方法がわかりません ご教授願えないでしょうか
同じものをVB2017で作りビルドすると問題なく他PCでも使用できます。

宜しくお願いします
投稿者 エピ  (社会人) 投稿日時 2024/2/2 16:59:35
配置モードを自己完結としても結果は同じでした。
投稿者 とくま  (社会人) 投稿日時 2024/2/5 11:45:33
DLLに関する認識が甘すぎます。

DLLはその機能を実現するプログラム本体です。
実行型EXEとの違いは、外部から利用できるようにしているかどうかです。
当然、著作物であり、ライセンスが存在します。

>同じものをVB2017で作りビルドすると問題なく他PCでも使用できます。
そう見えているだけで、設定で実行EXEに梱包するか、先に実行端末に
インストールなどして配布されています。どこにも存在しなければ、
プログラムは実行できません。

ただし、それが許されているかどうかは、ライセンス形態に依存します。
ルールを守らないで配布し、プログラムが動いたとしても、法律違反
となります。
これは、もし貴方がソフトウェア会社の担当で、私が顧客だった場合、
直ちに取引停止するくらい大きな問題です。

ライセンス形態は複雑で、数十種類存在しますが、主要な形態は5つくらいです。
組み合わせで亜種が増えていますが、ちゃんと勉強してもそれほど手間では
ありません。
https://www.osslicense.jp/oss-license-type/
https://qiita.com/mrdagon/items/1a5ecc25e2d2b1cd0a4d

そして、この手の問題を、何の責任も持たないネットの住人に聞いて
解決するクセを付けないでください。
ほとんどのDLLは、それが手に入るサイト等にライセンス形態と
配布(インストール)手順が記載されています。全てに共通するような
手順はありません。ライセンス形態によって手順は変わります。
どうしても分からなければ、DLLの提供元のメーカー担当者などに
直接問い合わせ、絶対に問題ないという保証を得た手順にしてください。
投稿者 エピ  (社会人) 投稿日時 2024/2/5 12:14:14
とくま さん
丁寧に説明いただきありがとうございます。 私の認識があますぎました。

ありがとうございます。