2011-12-20 59 views
2

自分のプロジェクト/ソリューションで管理しているクラスライブラリがあります。それは私が書いたいくつかの基本的な機能を含んでいます。これは主に古いVB.NETアプリケーションで使用されています。参照ライブラリを読み込めません - プロセスが別のプロセスで使用されているため、そのファイルにアクセスできません

私はそのようなアプリケーションの1つでいくつかの作業をしており、ライブラリアセンブリとメインアプリケーションの変更が必要です。私は「MYLIBRARY \ binに\リリース\ MYLIBRARYを指定した

Error 8 Unable to load referenced library 'myLibrary.dll': The process cannot access the file because it is being used by another process. 

:しかし、私はエラーを取得する主なアプリケーションを再コンパイルするようになったときに、私は、変更してライブラリをコンパイルするときにすることを発見しています.dll 'をメインプロジェクトの参照として使用します。私は過去に同じソリューションのライブラリプロジェクトを持っていたことを知っています。したがって、リリースDLLではなく参照としてプロジェクトを指定できましたが、プロジェクトを別に保つことをお勧めします。

リファレンスを再指定するか、メインプロジェクトを再読み込みすると問題は解決しますが(少なくとも一時的には)、より洗練された解決策を見つけることができます。

+0

私はスタンドアロンのライブラリとして保存したかったのですが、今は覚えていませんが、プロジェクトを参照する際に問題がありました。完全性のために、ポストビルドイベントを介して出力をコピーしようとしています。プロジェクトの参照が優先されると思われる理由について詳しく説明できますか? – CJM

+0

@David - 私はしばらくのうちにこの問題に戻っていませんが、IIRCの提案(同じVS Solution)は猶予を与えた唯一のものでした。あなたが答えとしてそれを掲示する気になれば、あなたは賞賛を得るでしょう。 – CJM

答えて

2

なぜそれらを別々に保つのが好きですか?それらが同じコードベースの一部である場合、それらは同じ解決策にあるはずです。これを短絡することで、コードベースの参照されているアセンブリに関するVisual Studioの開発機能が効果的に制限されます。さらに、bin出力を参照するのは非常に面倒です。スタンドアロンのライブラリにしたい場合は、その出力を作成してその出力をどこかのlibフォルダにコピーしてください。次に、非常に過渡的なbinディレクトリではなく、最終出力を参照することができます。

「より洗練された解決策を見つける」という点では、Visual Studioが提供するツールを使用することです。ソリューションファイルにコードを編成することは、そのツールの一部です。

2

Visual StudioがIntellisenseデータベースを更新しているときに、現在処理しているファイル(.dllまたは.exe)がロックされます。私が正しく覚えていれば、ソリューションを再構築するたびにIntellisenseデータベースが更新されます(ただし、私にはこれを引用しないでください)。再コンパイルや実行を試みる前に、VSがIntellisenseで処理されるまで待ってください。

+0

ダニエルありがとうございますが、この問題は、私がリファレンスを再作成するか、プロジェクトをリロードするまで続きます...試行の間に30分以上放置しました。 – CJM

+1

[Unlocker](http://www.filehippo.com/download_unlocker/)をインストールして、どのプロセスがファイルをロックしているかを確認することもできます。少なくともそれはあなたに次に見える場所を知らせるでしょう。また、複数のVisual Studiosを開いていると、ファイル上で競合する可能性があります。 –

+0

「複数のバージョンのStudioが開いています」が私の問題でした。ありがとう。 – Paul

関連する問題