4

Я пытаюсь предотвратить Visual Studio от переопределения моей двоичной папки проекта, который не предполагается использовать во время сборки. Воображение следующей структуры решения:Visual Studio обновляет двоичные файлы проекта, который не предполагается строить

App1 -> LibB -> LibA

Каждый раз, когда я пытаюсь построить проект LibB (сборка/восстановление) заменяет LibA.dll в моей бинарной папке App1. Реальная проблема заключается в другой версии LibA.dll, используемой App1 и LibB. Визуализации У меня есть еще один проект: App2

App1 -> LibB (v2) -> LibA (v2) App2 -> LibB (v2) -> LibA (v2) LibB (v2) -> LibA (v1)

И теперь каждый раз, когда я строить App1 проект он разрушает бинарную папку моего App2 проекта, потому что, когда проект LibB построен он двигается LibA.dll (v1) моих App2 бинарным которая не ожидается.

ps # 1: Я не могу обновить LibB (v2), чтобы использовать LibA (v2) только потому, что это упрощенное описание проблемы, и есть много зависимостей, подобных описанным выше. Предположим, это будет мое долгосрочное решение.

пс # 2: Если вы пытаетесь построить LibB проекта будет обновлять App1 и App2 бинарные папки с LibA.dll (v1) и разрушить оба приложения проектов.

ps # 3: Я воссоздал тестовое решение с аналогичной моделью зависимостей, и оно отлично работает, поэтому проблема с существующим решением, которое я пытаюсь исправить.

Как я могу предотвратить Visual Studio от обновления родительского проекта при создании дочернего проекта?

+1

Некоторые случайные точки. Если вы посмотрите в диспетчере конфигурации сборки, это все та же платформа, что и x86 или любой процессор. Помимо нормальных зависимостей проекта, один из ваших проектов может явно переназначить старый LibA (v1) и скопировать его в явном виде, например «Включить в проект», и вам действительно хотелось, чтобы ссылка включалась через зависимость проекта. Если вы ищете имя lib в виде строки в фактическом файле проекта и решения, вы можете увидеть «принудительную» ссылку odball или даже ссылку «Связанные». Я видел это с Winforms, которые были действительно в двух проектах одновременно. –

ответ

1

При использовании ссылок на проекты в Visual Studio это дизайн Visual Studio позволяет синхронизировать их, это по дизайну. Если вы используете общие библиотеки для нескольких приложений, вы должны иметь их в разных решениях и управлять зависимостями между решениями с помощью продукта управления пакетами, такого как nuget.

+0

Но почему я не могу воспроизвести его в своем тестовом решении. Я воссоздал тестовое решение с аналогичной моделью зависимостей, и он отлично работает, поэтому это проблема существующего решения, которое я пытаюсь исправить. –

1

Как я могу запретить Visual Studio обновлять родительский проект при создании дочернего проекта?

Каждый раз, когда я создаю проект App1, он разрушает двоичную папку моего проекта App2, потому что, когда проект LibB создается, он перемещает LibA.dll (v1) в мою двоичную папку App2, которая не ожидается.

Я считаю, что это по-дизайн, никогда не менее один способ остановить App1 губит Bin папку вашего проекта app2 будет делать копии файлов проекта (.csproj), и изменить папку Output Bin в Свойства проекта.

Затем создайте несколько файлов решений (.sln), чтобы открыть различные проекты, связанные с версией.

+0

Я попытался воспроизвести ту же проблему, используя совершенно новое решение и проекты - не смог этого сделать. Все работает так, как ожидалось. В моем текущем решении, скорее всего, у меня возникла какая-то странная проблема зависимости проекта, когда App2 заменяет исполняемые файлы в папке проекта App1, когда это не предполагается. –

+1

Похоже, что решение получило коррумпированное/запутанное. Удалите файл .suo, очистите решение или еще лучше, но просто используйте новый .sln без проблем –

1

Убедитесь, что ваши зависимостей между проектами сортируют и ваши настройки Configuration Manager являются правильными для решения уровня строить

Вы всегда можете создать конкретный проект индивидуально с в растворе, а

0

Не используйте ссылки на проекты, вместо этого ссылайтесь на скомпилированные двоичные файлы библиотек из какой-либо внешней папки, например C: \ DeployedBinaries и при необходимости скопируйте нужные двоичные файлы в C: \ DeployedBinaries вручную.