Я знаю, что ядро dotnet cli было построено поверх msbuild, поэтому когда
вы запускаете сборку / перестройку или чистое решение Visual Studio использует msbuild
Команды напрямую, а не те, что от dotnet core cli?
Для VS2017, я думаю, VS IDE вызывает msbuild.exe напрямую, когда Clean, Build and Rebuild
. Вы можете легко проверить эту точку с помощью диспетчера задач или Process Monitor .
Что касается того, что вы упомянули выше: It appears that the MSBuild command line options are not specified, but rather the MSBuild APIs are called within Visual Studio.
Я думаю, что это правильно, но только для более ранних версий (2010,2013). Я тестировал с VS2010, когда выполняю действия, связанные со сборкой в VS, он не вызывает MSBuild.exe. Поэтому msbuild в VS2010 не выполняется как separate process
.
Но для VS2017, когда я создаю проекты, ориентированные на ядро .net, при выполнении действий, связанных со сборкой (нажимая кнопку build, clean, rebuild), он, очевидно, вызывает msbuild.exe, как показано ниже:
О том, какие команды msbuild на самом деле выполняет VS:
С тех пор VS2017 вызывает msbuild.exe для сборки .net core или .net fx проектов.
На мой взгляд:
Для решения, которое содержит только проект:
Построить решение => msbuild xxx.sln /t:build /p:Configuration=xxx;Platform=xxx
Перестройте решение => msbuild xxx.sln /t:rebuild /p:Configuration=xxx;Platform=xxx
=> msbuild xxx.sln /t:clean;build /p:Configuration=xxx;Platform=xxx
Очистить раствор => msbuild xxx.sln /t:clean /p:Configuration=xxx;Platform=xxx
=> msbuild xxx.sln /t:clean
Я думаю, что каждый раз, когда мы нажимаем кнопку Build в VS, он выбирает значение Configuration и Platform из этого поля, потому что эти два параметра обязательно будут переданы в MSBuild.exe.
Кроме того, одну вещь, которую мы можем обнаружить, это то, что в IDE есть процесс проверки перед началом сборки: он проверит, устарел ли файл, а затем определит, нужно ли его собирать или нет. Но это не то, что вы спрашиваете в своей проблеме, и это не влияет на команду, которую вы хотите, поэтому я пропускаю ее.
Также, на этой странице вы можете найти некоторые настройки, связанные с msbuild:
Так что на самом деле я думаю, что приведенная выше команда должна добавить некоторые параметры, такие как: msbuild ... -m:8 -v:M
.
Кроме того: Хотя я обнаружил, что действие, связанное со строительством, в VS вызовет msbuild.exe напрямую. Я не уверен, что моя команда выше на 100% верна. Боюсь, никто не может это гарантировать, кроме ребят, которые разрабатывают команду меню в VS IDE. Поэтому, если я что-то не так понял, пожалуйста, поправьте меня :))
И если вы просто хотите получить то же самое, что и в VS, вы также можете попробовать devenv.exe . Это единственное место в официальном документе, которое подтверждает, что переключатель сборки выполняет ту же функцию, что и Build Solution menu command
в интегрированной среде разработки (IDE).