Как детерминистически построить как с Visual Studio, так и с MSBuild?
На самом деле , чтобы построить C# проектов, вызов VS IDE MSBuild для создания проектов. VS IDE вызывает MSBuild для сборки проекта, что само по себе согласуется с MSBuild, скомпилированным через командную строку. MSBuild существует в папке C:\Program Files (x86)\Microsoft Visual Studio\2019\xxxx\MSBuild\Current\Bin
в папке VS2019.
Просто VS IDE объединяет множество инструментов. Если вы установите некоторые расширения или инструменты, связанные со сборкой в VS IDE, это может повлиять на окончательную сборку. MSBuild (командная строка) - это чистый инструмент компиляции, VS IDE вызовет его для сборки.
---------------------- -----
Сначала , интересно, если вы используете VS IDE и ее Командная строка разработчика для VS (существует под VS2019 IDE) строить свои проекты отдельно. Если это так, я думаю, вы должны убедиться, что аргументы командной строки соответствуют параметрам сборки в VS IDE.
Сначала отключите сторонние расширения в разделе Расширения . -> Управление расширениями в случае, если они влияют на MSBuild в VS IDE.
Затем убедитесь, что при сборке ваших проектов вам следует обратить внимание на Configuration (Debug
или Release
) или Платформа (x64
, x86
или Any CPU
) всех проектов.
Затем вы должны сделать это в командной строке MSBuild:
msbuild xxxx.csproj -t:build -p:Configuration=xxx -p:Platform=xxx
Убедитесь, что инструкции по сборке соответствуют.
----------------------- ---
Секунда , когда вы используете Build Tool для VS2019 в другом агенте (его можно установить отдельно без VS IDE), и если это так, вы должны убедиться, что его версия такая же, как VS IDE. (версия Build Tool v16.xxx
такая же, как версия VS IDE v16.xxx
), и разные версии MSBuild будут иметь немного разные сборки, поэтому будьте последовательны.
На самом деле , MSBuild строит c # проектов, используя cs c .exe для компиляции файлов, поэтому оба VS IDE и MSBuild совместимы для файлов c#. Нет проблем с различными компиляторами, использующими csc
.
Кроме того, , чтобы увидеть более детально: вы можете просмотреть подробный журнал сборки следующим образом:
В VS IDE :
Tools
-> Options
-> Projects and Solutions
-> Build and Run
-> установить MSBuild project build output verbosity
в Detailed
.
В MSBuild :
msbuild xxxx.csproj -t:build -p:Configuration=xxx -p:Platform=xxx -v:detailed