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

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

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

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

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

3587閲覧

ローカルの DLL の参照設定を他のプロジェクトから参照された場合に引き継ぎたい

okaryu

総合スコア27

DLL

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

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

1クリップ

投稿2019/07/25 01:31

ローカルの DLL を参照しているプロジェクトを他のプロジェクトから参照した場合に、ローカルの DLL の参照設定を引き継ぐことはできないでしょうか?

構成としては以下のようなイメージです。

my_solution.sln |-- ProjectAAA | |-- 参照 | - ローカルの DLL | |-- ProjectBBB | |-- 参照 | - ProjectAAA | - ローカルの DLL // この参照設定をしないと起動時にエラー :

一つのソリューションの中に ProjectAAAProjectBBB が存在し、 ProjectAAA はローカルに存在するの DLL を参照しています。ローカルに配置してある DLL は Nuget で取得できなかったパッケージのイメージです.

この ProjectAAAProjectBBB で参照する場合、ProjectBBB にもローカルの DLL への参照を設定しないといけないため困っています。

使用している VisualStadio のバージョンは「Microsoft Visual Stadio Professinal 2017 Version 15.7.6」です。

ご存知の方がおられましたら、ご教授ください。

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

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

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

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

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

hihijiji

2019/07/25 02:39

そのDLLをNuGetに登録はできないのですか?
okaryu

2019/07/25 02:58 編集

ちょっとなかった発想でした。指摘いただき、ありがとうございます。社内ローカルの nuget サーバ作って...とかだったらいけるかもしれないですね。 ただ、今回の質問としては、あくまでローカルの DLL を参照するときの話に限らせてください。
hihijiji

2019/07/25 03:05

NuGetが便利すぎて、DLL周りの苦労はすっかり忘れてしまっている今日この頃です。 配布、再配布の問題がなければ公開しちゃうのが一番手っ取り早いのですが…
guest

回答2

0

ベストアンサー

一つのソリューションに含まれる複数のプロジェクトで、NuGet の同じパッケージを使いたいということなら、このような方法はどうでしょうか?

visual-studio – 複数のプロジェクトとソリューションにまたがる共有NuGetパッケージ

追記

NuGet にあるようです。

WPF のビヘイビアーが入ってる Blend SDK for Visual Studio が Visual Studio 2019 で消えた件について

Microsoft.Xaml.Behaviors.Wpf

追記

あくまで NuGet は使わないということであれば、csproj を書き換えて参照を加えるツールを作るのも一つの方法かと思います。XML なので書き換えるのは簡単です。ItemGroup の中に Reference を追加してください。

投稿2019/07/25 02:06

編集2019/07/25 06:59
Zuishin

総合スコア28660

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

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

okaryu

2019/07/25 02:33 編集

回答ありがとうございます。 現状、問題となっているのは Nuget から取得できないパッケージに関してです。 具体的には Microsoft.Expression.Interactions.dll です。以下のサイトを参考に DLL を取得し参照を試みました。 http://www.nuits.jp/entry/blend-sdk-for-vs2019 この方法により、ローカルに DLL を配置し無事に参照できるようになりました(↑の例だと ProjectAAA )。 しかし、違うプロジェクト(↑の例だと ProjectBBB)から、その DLL を使ったプロジェクト(ProjectAAA)を参照しようとすると、同時に DLL への参照も設定しないとエラーになってしまうことがわかりました。 今後、ローカルの DLL を使ったプロジェクト(ProjectAAA)を参照するプロジェクトが増えるたびに、セットで DLL への参照も追加しなければなりません。 このままでは、保守性がよくないので自動で参照の設定が行われるような手段を模索しています。
Zuishin

2019/07/25 03:03

今回は場当たり的な方法を提案しましたが、本来であれば Microsoft.Expression.Interactions.dll を必要としないはずのプロジェクトで参照が必要になるということは、隠蔽がうまくいっていないということで、設計を見直すことをまず考えるべきではないかと思います。
guest

0

たぶんビルド出力先に特定のDLLのコピーしたい、という意味だと思うので、いくらでも方法はありそうですけど、例えばビルド後イベントでコピーする処理を書くとか。

投稿2019/07/25 01:59

gentaro

総合スコア8949

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

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

okaryu

2019/07/25 02:39 編集

回答ありがとうございます。 実際の作業としては、 「ローカルの DLL を使ったプロジェクトを参照する場合、DLL への参照もセットで行う」 というだけなので、今回に限った話でいえば解決はしています。 しかし、今後、 「プロジェクトを参照する場合、そのプロジェクトがローカルの DLL を使用していないか確認し、使用していた場合、セットで DLL への参照も追加しなければならない」 となると、保守性がよくないので自動で参照の設定が行われるような手段を模索しています。
gentaro

2019/07/25 06:41

あぁ、なるほど。 本来はそのような事が起こらないように設計すべきですが、別の方策としてはその参照されるプロジェクトをnugetパッケージにしてローカルのnugetリポジトリに置くようにして、直接のプロジェクト参照を禁止する、とかいう方法もありそうですね。(思いつきレベルなので面倒そうだし思考の穴があるかもしれませんが)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問