MSBuild + Visual studio: настройка «Копировать локальный» по умолчанию для всех проектов в решении - PullRequest
3 голосов
/ 06 июня 2011

Я очень мало знаю о MSBuild.

Недавно я прочитал, что установка «копировать локально» на «ложь» для большого решения может значительно сократить время компиляции. Я нашел способ установить значение по умолчанию равным false, установив файл для всей машины с именем CustomAfterMicrosoftCommon.targets в пути расширения MSBuild.

Это сработало хорошо, однако есть несколько проблем с этим подходом.

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

-Я хочу, чтобы это значение по умолчанию было применено к "Проектам без вывода". Под этим я подразумеваю, что у проектов библиотеки классов не должно быть локального копирования, установленного в true. Однако основной проект приложения должен копировать local в true для зависимостей библиотек классов, поскольку он должен быть запущен. В идеале для этих выходных проектов я бы хотел вернуться к более интеллектуальному стандартному значению по умолчанию, которое достаточно умно, чтобы определить, должна ли ссылка быть закрытой или нет. Я полагаю, что по умолчанию можно задать значение «Локальное копирование», а затем явно установить для «Копия локального» значение «истина», где это необходимо. Это не так уж и плохо, учитывая, что у вас обычно не так много выходных проектов, но я хотел бы посмотреть, не придут ли некоторые люди с лучшим решением.

Есть идеи?

1 Ответ

1 голос
/ 07 июня 2011

Msbuild находит целевые расширения, подобные этому %MSBuildExtensionsPath%\v4.0\CustomAfterMicrosoftCommon.targets

Так что один из способов решить вашу первую проблему - установить только MSBuildExtensionsPath для решения, в котором вы хотите применить свои собственные значения по умолчанию.

Вторую проблему я решил по-другому.Я сохранил copylocal=false также на «основном проекте приложения».Вместо этого я добавил выходной путь другого проекта в переменную среды DEVPATH.

SET DEVPATH=C:\Proj1\Output;C:\Proj2\Output

(и внес необходимые изменения в machine.config, как указано здесь )

Редактировать:

Вот хорошая страница о том, как сделать настройки с областью проекта или решения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...