У меня есть 3 С# проекта A, B и C. Оба A и B ссылки C. Ссылки на C из A и B устанавливаются в "Копировать локальную", подразумевая, что после того, как C построен на C.dll(в выходной каталог C), он копируется в выходной каталог A или B (в зависимости от того, что компилируется)
У меня есть 2 решения, SA и SB. SA содержит A и C, а SB содержит B и C. Я запускаю 2 экземпляра Visual Studio 2015. Я открываю SA в одном экземпляре и SB в другом.
Я нахожу, что если я начну отладку (F5) A из SA, а затем (пока A все еще отлаживает), сделайте замену на C из SB и попытайтесь скомпилировать SB, я получаю ошибку компиляции, указывающую, что C. dll нельзя переписать, потому что он используется другим процессом (экземпляр devenv.exe, на котором выполняется SA).
Это не имеет смысла для меня, потому что после компиляции C в C.dll и копирования в выходной каталог A, Visual Studio должна освободить блокировку файла.
Я проверил (через окно Modules в SA), что загруженная версия C.dll - это копия в выходной каталог A.
Это началось вчера, когда я начал использовать Visual Studio 2015 (вместо Visual Studio 2013).
Есть ли у кого-нибудь идеи? Мое текущее решение - запустить SA через CTRL-F5 (начать без отладки), но это становится раздражающим, когда я хочу одновременно запускать SA и SB в режиме отладки.
Спасибо.
UPDATE
Я изучил, почему функция "Изменить и продолжить" может привести к описанному поведению, и согласно этой странице https://msdn.microsoft.com/en-us/library/ms164926.aspx > Изменить и продолжить позволяет для внесения изменений в исходный код во время сеанса отладки и получения результатов, не останавливая отладки, перекомпиляции и перезапуска сеанса отладки (какова была бы суровая проблема, которая должна была быть). Если эта функция включена, Visual Studio может потребоваться перекомпилировать любую зависимую DLL в любое время, что объясняет блокировку.