Почему построение двух целей с помощью msbuild отличается от построения каждой цели отдельно? - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть проект, который импортирует определенный файл целей из пакета Nuget.Несмотря на то, что я использую PackageReferences, я вынужден импортировать этот файл вручную.

(Подробности см. В моем другом вопросе - Как мы должны выполнять цели сборки пакетов в новом мире, где пакеты nuget используются черезmsbuild PackageReference? )

Этот целевой файл внедряет chromedriver.exe в группу элементов Content с CopyToOutputDirectory = PreserveNewest.

Я наблюдаю ситуацию, когда chromedriver.exe не копируется в папку bin при запуске msbuild /t:"Restore;Build", но копируется при запуске двух целей по отдельности - msbuild /t:Restore; msbuild /t:Build.

Может кто-нибудь объяснить, как это происходит?

(я убил большую часть дня, узнавая разницу в моей коже, хотите знать, как это произошло?)

1 Ответ

0 голосов
/ 08 декабря 2018

Restore изменяет импортированные файлы проекта в каталоге obj\.

Для того, чтобы это вступило в силу, файл проекта должен быть переоценен полностью, что не происходит при запуске Restore and Buildцели в том же вызове.

Используйте ключ командной строки -restore для MSBuild, чтобы запустить Restore раньше других указанных целей в том же вызове командной строки.MSBuild запустит Restore, очистит свои кэши XML и повторно выполнит оценку проекта при запуске запрошенной сборки.

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