Невозможно загрузить справочную библиотеку - процесс не может получить доступ к файлу, поскольку он используется другим процессом - PullRequest
2 голосов
/ 20 декабря 2011

У меня есть библиотека классов, которую я поддерживаю в своем собственном проекте / решении. Он содержит несколько основных функций, которые я написал, которые я использую в основном в некоторых старых приложениях VB.NET.

Я работаю над одним таким приложением, и оно потребовало внесения изменений в сборку библиотеки, а также в основное приложение. Тем не менее, я обнаружил, что когда я изменяю и компилирую библиотеку, когда я прихожу перекомпилировать основное приложение, я получаю ошибку:

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

Я указал «myLibrary \ bin \ Release \ myLibrary.dll» в качестве ссылки в основном проекте. В прошлом я знал, что у меня был библиотечный проект в том же решении, поэтому я мог бы указать проект в качестве справочного, а не на релизную DLL, но я бы предпочел хранить проекты отдельно.

Повторное указание ссылки или перезагрузка основного проекта решает проблему (по крайней мере, временно), но я бы предпочел найти более сложное решение.

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

Почему предпочитаете держать их отдельно?Если они являются частью одной и той же кодовой базы, они должны быть в одном решении.Закрывая это, вы фактически ограничиваете возможности разработки Visual Studio по отношению к ссылочной сборке в базе кода.Кроме того, ссылка на вывод bin очень грязная.Если вы хотите, чтобы это была автономная библиотека, сделайте так, чтобы она создала свой вывод и скопировала этот вывод в папку lib.Затем вы можете сослаться на конечный результат, а не на высокотранзитивный каталог bin.

По сути, с точки зрения «поиска более сложного решения», это вопрос использования инструментов, которые Visual Studioобеспечивает.Организация кода в файлы решений является частью этого инструментария.

2 голосов
/ 22 декабря 2011

Когда Visual Studio обновляет свою базу данных Intellisense, она блокирует файл (.dll или .exe), который в данный момент обрабатывает. Он обновляет базу данных Intellisense каждый раз, когда вы перестраиваете решение, если я правильно помню (хотя не цитируйте меня по этому поводу). Попробуйте подождать, пока VS не завершит работу с Intellisense, прежде чем пытаться перекомпилировать или запустить.

...