Я боролся с этим в течение нескольких дней, и после тонны поиска я не могу найти путь, на котором я должен быть.
То, что я хочу сделать, - это создать проект MSBUILD, который будет строить все наше приложение .NET(constst из 8 решений и, возможно, 250 проектов, разделенных между ними) с несколькими настройками, переопределенными из отдельных файлов проекта, чтобы сделать сборка отладки для себя.
В частности, я хочу построить нашу конфигурацию выпуска с отключенными оптимизациями и полной информацией об отладке /pdbs. Кроме того, для сокращения нашего времени сверхбыстрого построения я хочу, чтобы "копировать локальную" (или частную в фактическом файле proj file xml) false для каждой ссылки каждого проекта.
Первые вещи были довольно легкими, я могу довольно легко переопределить свойство уровня проекта (вы даже можете сделать это из командной строки MSBuild с помощью /p ), но я не могу понять, как переопределить свойство на ссылка. Я пробовал несколько вещей, которые я видел здесь, на StackOverflow и в Интернете, но пока ничего не найдено.
Я могу сделать то, что хочу, изменив Microsoft.Common.targets, комментируя код цели _CopyFilesMarkedCopyLocal, полностью пропускает копирование этих файлов. Но я не хочу изменять свою глобальную конфигурацию и делать это при любых обстоятельствах. Я создал собственный файл альтернативных целей, который работает, если я изменяю отдельный файл проекта, чтобы указать на него, но я не могу понять, как указать, что это будет использоваться на верхнем уровне (мой .proj файл, который просто строит все 8 решений). Было бы здорово, если бы я мог каким-то образом переопределить цель _CopyFilesMarkedCopyLocal на верхнем уровне, чтобы, если MS изменит файл целевых объектов по умолчанию, моя сборка не испортилась, но я не могу понять, как сделать эту работу.
Лучше всего было бы, если бы можно было просто переопределить свойства ссылочного уровня, например, вы можете проектировать свойства уровня, не переписывая/не переопределяя объекты целей сборки, но я не нашел информации о том, что это возможно.
Заранее благодарим за помощь.
P.S. Невозможно, чтобы я фактически просматривал все файлы проектов и менял их; Мне нужно решение, которое оставляет существующий код на месте, как есть.