#visual-studio #visual-studio-2010 #msbuild
#visual-studio #visual-studio-2010 #msbuild
Вопрос:
Наше решение находится в TFS 2010 и теперь содержит 39 проектов. Один проект приложения Windows и 38 библиотек классов. Пока что наш проект приложения Windows содержит все ссылки на все библиотеки классов с CopyLocal=true . Таким образом, build создает одну папку со всеми DLL-файлами в ней вместе с нашим .exe.
Эта настройка больше не работает для нас, и нам нужно удалить все ссылки из Windows app. project (dll-файлы в любом случае загружаются с использованием отражения). Как я могу настроить сборку для работы по-прежнему, но без ссылок в Windows app. project?
Ответ №1:
Вам необходимо изменить сборку 38 библиотечных проектов. Есть несколько вариантов:
Вы можете изменить каждый проект так, чтобы свойство $(OutputPath) указывало на правильную папку удаления, что-то вроде этого:
<PropertyGroup>
<OutputPath>..Applicationbin$(Configuration)</OutputPath>
</PropertyGroup>
Если бы я делал это, я бы изменил все 39 свойств, чтобы использовать общий импорт, в котором они были определены, и все они были собраны в папку drop. Затем просто измените проект приложения, чтобы указать на папку drop для отладки.
Вы также можете (используя обычный импорт) на этапе развертывания после сборки копировать созданные сборки в папку drop по мере сборки каждого проекта.
Комментарии:
1. Спасибо. Я попробую с вашими предложениями.
2. У меня неожиданная проблема. Решение строится само по себе, как и ожидалось, поэтому основной вопрос решен, но теперь VS2010 перестраивает проекты, даже если при использовании опции отладки F5 изменений нет ?! Чтобы запустить приложение для отладки, мне нужно подождать несколько минут, пока завершатся ненужные сборки ?!
3. Я уже видел подобные вещи раньше, когда информация о добавочной сборке выходит из строя. Попробуйте выполнить тщательную ручную «очистку», избавившись от всех папок «obj» и «bin», выключите и перезапустите VS и повторите попытку. Если это не сработает, измените ведение журнала вывода сборки на «диагностика» и постройте, затем скопируйте окно вывода в текстовый файл и выполните поиск уведомлений «Проект сборки», которые показывают, почему проекты перестраиваются для подсказки.
Ответ №2:
Когда вы создаете проект с помощью MSBuild в командной строке, вы можете сделать что-то вроде следующего:
msbuild yoursolution.sln /p:Configuration=Debug /p:OutDir=c:your-specific-location
OutDir — это переменная, созданная из OutputPath в каждом проекте, поэтому переопределение ее здесь переопределит ее глобально, гарантируя, что все выходные данные из всех созданных проектов будут скопированы в это местоположение.