する質問をすることでしか得られない、回答やアドバイスがある。9前提・実現したいことお世話になります。ご質問させていただきます。現在C#でOracleのデータベースに接続するクラスライブラリを自作しています。Oracleの操作にはNugetパッケージの管理から下記DLLをインストール・参照して使用しています。v12.2.1100発生している問題・エラーメッセージ新規のプロジェクトを作成して、自作したクラスライブラリを参照して使用すると次の例外が発生してしまいます。つが読み込めませんでした。指定されたファイルが見つかりません。v12.2.1100をNugetパッケージの管理からインストールするとOracleのデータベースの読み書きができました。一度Oracle.ManagedDataAccessをプロジェクトにインストールした後、Oracle.ManagedDataAccessへの参照を削除して自作ライブラリへの参照を追加して実行するとOracleのデータベースの読み書きができました。お聞きしたいこと以上からおそらく新規で作成したプロジェクトから自作ライブラリのオラクル操作クラスを使用する時にOracle.ManagedDataAccessへの参照が見つけられないためにSystem.IO.FileNotFoundExceptionの例外が発生しているのではないかと考えています。今回のように自作ライブラリで参照しているDLLを別のプロジェクトからも使えるようにするにはどうしたら良いのでしょうか。別の原因でこの問題が起きているのであればご教授いただきたく質問させていただきました。開発環境Windows8.1VisualStudio2017FrameWork4.5.2不足している情報があればご指摘下さい。attachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。件sort評価が高い順sort新着順sort古い順linkcheckベストアンサー+2exeのフォルダにOracle.ManagedDataAccessのDLLが存在していると思います。Nugetで参照追加した場合はこのDLLコピーを自動でやってくれます。一度Nugetでインストールした後削除しても動くのはDLLがそのまま残っているからです。ソリューションのクリーンをすると動かなくなるはずです。手動でコピーすれば動きます。ちなみにDLL単体で参照するのではなく、自作のクラスライブラリのプロジェクトをソリューションに追加して、プロジェクトごと参照すればDLLのコピーも自動で行われると思います。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。13:31sh_akira様ご回答ありがとうございます。ご指摘の通り、ソリューションをクリーンしたところ同様の例外が発生して動かなくなることが確認できました。ソリューションに自作クラスライブラリのプロジェクトを追加し、プロジェクトの参照をしたところ、こちらも問題なく動作できました。この自作クラスライブラリを別のソリューション内にあるプロジェクトでも使用する時には同じようにその別のソリューションに追加して参照すれば良いのでしょうか。複数のソリューションにまたがって使用したい自作ライブラリはその都度ソリューション毎に追加していくしかないのでしょうか。質問からは少しずれてしまいますが今回のような自作ライブラリの使い方をする時のソリューション、プロジェクトの管理方法で良い方法があれば教えていただきたいです。ご回答ありがとうございます。ご指摘の通り、ソリューションをクリーンしたところ同様の例外が発生して動かなくなることが確認できました。ソリューションに自作クラスライブラリのプロジェクトを追加し、プロジェクトの参照をしたところ、こちらも問題なく動作できました。この自作クラスライブラリを別のソリューション内にあるプロジェクトでも使用する時には同じようにその別のソリューションに追加して参照すれば良いのでしょうか。複数のソリューションにまたがって使用したい自作ライブラリはその都度ソリューション毎に追加していくしかないのでしょうか。質問からは少しずれてしまいますが今回のような自作ライブラリの使い方をする時のソリューション、プロジェクトの管理方法で良い方法があれば教えていただきたいです。私は都度ソリューションにプロジェクトごと追加しています。クラスライブラリが複数になったりNugetが複数になったりと手動でコピーして間違えて古いバージョンを使用したりする方が面倒だと思っています。x86とx64を切り替えたりも楽なので。共通で使っているライブラリを編集したら他で使っているプロジェクトのテストは必要ですがそれは手動で追加しても同じことと思います。ちなみにDLLで参照したい場合は、プロジェクトのビルドイベントで好きなコマンドを実行できますので、使っているDLLを一か所にまとめておいて、ビルドのたびにコピーさせる事もできます。私は都度ソリューションにプロジェクトごと追加しています。面倒だと思っています。x86とx64を切り替えたりも楽なので。それは手動で追加しても同じことと思います。17:15ご教授ありがとうございます。おっしゃる通り、手動コピーするよりはソリューションに都度プロジェクトごと追加した方が間違いがなさそうなので今後はそのように活用していきたいと思います。x86とx64の切替はソリューションAとソリューションBがあった時にそれぞれにクラスライブラリのプロジェクトを追加してソリューションAではx86にソリューションBではx64に切替えて使うということでしょうか。その場合はAとBで設定を個別に持っているのでしょうか。下記方法について勉強不足で分からなかったのでもう少し教えていただけないでしょうか。>ちなみにDLLで参照したい場合は、プロジェクトのビルドイベントで好きなコマンドを実行できますので、使っているDLLを一か所にまとめておいて、ビルドのたびにコピーさせるお手数おかけしますが、よろしくお願いします。ご教授ありがとうございます。おっしゃる通り、手動コピーするよりはソリューションに都度プロジェクトごと追加した方が間違いがなさそうなので今後はそのように活用していきたいと思います。x86とx64の切替はソリューションAとソリューションBがあった時にそれぞれにクラスライブラリのプロジェクトを追加してソリューションAではx86にソリューションBではx64に切替えて使うということでしょうか。その場合はAとBで設定を個別に持っているのでしょうか。下記方法について勉強不足で分からなかったのでもう少し教えていただけないでしょうか。お手数おかけしますが、よろしくお願いします。18:07プロジェクトごとにx86,x64等の設定は個別に持っていて、ソリューションごとにどれを使うか選べます。構成マネージャーを使います。プロジェクトのプロパティを開くとビルドイベントのタブがあり、ビルド後イベントのコマンドラインが設定できるようになっています。/Yというコマンドを指定すると、DLLsに入れたファイルがビルド後に自動でexeのフォルダにコピーされるようになります。プロジェクトのクリーンをしたあと手動でDLLをコピーしなくて良くなります。xcopyなどで検索してください。ソリューションごとにどれを使うか選べます。構成マネージャーを使います。ビルド後イベントのコマンドラインが設定できるようになっています。コピーされるようになります。プロジェクトのクリーンをしたあと手動でDLLをコピーしなくて良くなります。xcopyなどで検索してください。詳しく教えていただきましてありがとうございます。ビルドイベントについては初めて知りました。今後色々調べて活用してみたいと思います。質問内容以外についてもご教授いただきましてありがとうございました。詳しく教えていただきましてありがとうございます。ビルドイベントについては初めて知りました。今後色々調べて活用してみたいと思います。質問内容以外についてもご教授いただきましてありがとうございました。キャンセル完了するlink+1こんにちは。今時の自作クラス参照なら、自作プロジェクトをnugetパッケージ化してしまうという方法があります。パッケージ化してしまえば、インストール時に依存している別のパッケージも自動でインストールしてくれるので楽ちんです。質問の例だと、自作ライブラリのnugetパッケージをインストールすると勝手にOracle.ManagedDataAccessもインストールされるようにできます。ローカルのnugetパッケージ置き場を用意して、それをVisualStudioに設定しておけば、通常の公開パッケージのインストールと同様にインストールができるようになります。2017にはプロジェクトをワンボタンでnugetパッケージにするお手軽ボタンが存在するのですが、net452のレガシcsprojを利用している場合は使用できなかったと記憶しています。このため、残念ながら昔ながらの方法でnugetパッケージを作成する必要があるはずです。詳しくは調べてください。csprojに書き換えることで動くようにできます。Standard)」みたいなnetstandardのテンプレートを選択して、作成された空プロジェクトのcsprojを丸ごとコピーしてきて、<TargetFramework>がnetstandard2.0になっているものをnet452に書き換えてから上書きしてやればいいです。壊す可能性が高いのでバックアップはしてくださいね。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。17:02tamoto様ご回答いただきましてありがとうございます。試せていませんがnugetパッケージ化するやり方も今回初めて知りました。今まで特にframeworkのバージョンを気にしたことがなかったので、違いを調べて教えていただいたVS2017のpackコマンドでnugetパッケージにするやり方をテストしてみたいと思います。ご回答いただきましてありがとうございます。試せていませんがnugetパッケージ化するやり方も今回初めて知りました。今まで特にframeworkのバージョンを気にしたことがなかったので、違いを調べて教えていただいたVS2017のpackコマンドでnugetパッケージにするやり方をテストしてみたいと思います。【VB】Oracle.DataAccess.dllを参照するFormアプリの起動が遅い解決済NuGetパッケージから操作ができません。頂いたご意見への回答は行っておりません。