質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

解決済

3回答

7885閲覧

C# 外部DLL直接参照設定方法

Financier

総合スコア7

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

0クリップ

投稿2015/11/28 09:03

編集2015/11/28 09:29

C# Visual Studio 2013で外部DLLを直接参照設定する方法を教えて下さい。

■背景
あるソフトのAPIを使用するのに、Visual Studioの参照で取り込んでいましたが、あるソフトが更新される度に当方も更新する必要がありました。
この状況を打開するために、直接対象ソフトのDLLを参照するようにすれば、合わせて更新する必要がないと考えました。

■試してみたこと
プロジェクトのプロパティにある参照パス設定。
これはFileNotFoundエラーで使えませんでした。

■DLLの情報を追加します
.Net Frameworkで作成されたMSIL形式のものです。
その他、log4net.dllなどあります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/11/28 09:14

外部DLLはどのようなDLLでしょうか? .Net Framewoakで作られたMSIL形式のdllでしょうか? あるいはCOMコンポーネントでしょうか? あるいはWin32DLLでしょうか?
guest

回答3

0

参考程度です、
使用している外部DLLについては、
>.Net Frameworkで作成されたMSIL形式のものです。
>その他、log4net.dllなどあります。
との掲示ですが、
外部DLLについては、上位互換性が担保されていますか?
場合によっては、新バージョンで破壊的な変更が成されて、
想定外となりませんか?
⇒全く関連の無い他者が作成したDLLであれば、DLL HELLを、自ら呼び込む様な事になりませんか?

C# アセンブリ 動的 ロード
C# DLL 動的ロード
遅延バインディング
事前バインディング
DLL HELL

投稿2015/11/28 22:42

daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Financier

2015/11/29 00:30

上位互換性は担保されていませんね。 実際、引数が変わって動作しなくなることがありました。一応そのソフト作成者とは連絡が取れるので、今後はそのような変更はないとの回答でしたが、DLL HELLにはなりうるかもしれません。
guest

0

MSIL形式のDLLでしたらGACにインストールしてはどうでしょうか?

投稿2015/11/28 09:52

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Financier

2015/11/28 10:04

GACにインストールした場合、対象ソフトのDLLが更新された場合どうなるのでしょうか・・・?
guest

0

ベストアンサー

こんにちは。
外部側が更新されたら、こちらも更新する必要があるというのはどういう参照の仕方をしているのでしょう。
特定バージョンの指定をしているということでしょうか?

投稿2015/11/28 09:18

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Financier

2015/11/28 09:34 編集

そのソフトのDLLが更新されると、APIをキックしたときに受け付けるサーバー側が古いDLLからは受け付けなくなってしまうようなのです。 あと、ユーザーからの希望で他のソフトのDLLを当方作成のソフトに同梱したくないというのもありまして、直接参照できたらと思った次第です。
Tak1wa

2015/11/28 13:25

どういうサーバーなんだろうという疑問が少しあるのですが… そういうことであれば、リフレクションなどを使用して動的にインスタンス生成、メソッドコールを行うしかないかもしれませんね。Assembly.LoadFromメソッドでDLLを動的ロードできます。
Financier

2015/12/05 05:56

遅くなりましたが、Assembly.LoadFromを使用して解決できそうです。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問