ResolveAssemblyReference медлительность - скорость сборки?

1

У меня есть проект с возможно 200+ проектами. Это старая птица. Чтобы сделать локальные сборки быстрее, я запустил диагностическую сборку. Похоже, что решение сборки и ссылки на проект ссылаются на msbuild некоторое время. VS, похоже, делает это быстро, есть ли способ заставить MSBuild использовать кеш для этих ссылок или как-то быстрее его решить?

Кажется, MSBuild не нужно будет часто ссылаться на ссылку на сборку с инкрементной сборкой, верно?

Есть ли способ заставить MSBuild сообщать о своем внутреннем дереве зависимостей для этого?

  • 0
    Это вызвано тем, что ваш жесткий диск занимает некоторое время, чтобы найти файлы, когда кэш файловой системы холодный. От 8 до 20 секунд для решения такого размера, который можно дать или взять. Это выглядит быстро из VS, потому что VS делает это в фоновом режиме, а вы делаете что-то еще. SSD это хорошо.
Теги:
msbuild
incremental-build

1 ответ

0

VS использует один и тот же механизм MSBuild для выполнения сборки, поэтому независимо от производительности, которую вы наблюдаете от VS, вы сможете достичь, запустив сборку из командной строки с помощью MSBuild.exe.

Следует иметь в виду несколько моментов, которые могут объяснить разницу в скорости сборки между VS и командной строкой:

  1. Если вы создаете "Только проект" в VS, то есть щелкните правой кнопкой мыши на узле проекта, выберите "Build Project (this)" из "Project Only", затем построение пропустит создание любых проектов, на которые делается ссылка. Это самый быстрый способ сделать инкрементную сборку, но вам нужно заранее знать, что все зависимости обновлены.

Если вы хотите реплицировать это из командной строки, просто передайте параметр BuildProjectReferences = false. Например:

msbuild myproject.csproj /p:BuildProjectReferences=false
  1. По умолчанию для VS могут быть установлены для сборки нескольких proc, что во многих случаях значительно увеличивает скорость сборки. Однако в командной строке значения по умолчанию всегда выполняют сборку с одним проком, так что это будет выглядеть намного медленнее, чем VS. Всегда передавайте /m в командную строку msbuild. Например:
msbuild MySolution.sln /m

Ещё вопросы

Сообщество Overcoder
Наверх
Меню