Различия между сборщиком сборок Visual Studio (.sln) и MSBuild - PullRequest
21 голосов
/ 14 февраля 2012

Я пытаюсь настроить TeamCity для выполнения CI с использованием .Net и настройки сборщиков:

  1. Visual Studio (sln)
  2. MSBuild
  3. Visual Studio 2003

Какая разница?Почему три проекта работают над одним и тем же типом проекта?(За исключением 2003 года, который, по-моему, только для 2003 года, почему?)

Принимая во внимание проблему, у нас есть следующие сборщики сборок для файлов .exe:

  1. .NET Process Runner
  2. Командная строка

Программа запуска "Командная строка" не работает ни с какой сборкой .net?Почему .Net Process Runner?

Ответы [ 4 ]

15 голосов
/ 14 февраля 2012

Visual Studio (sln)
Если ваше решение маленькое и вам не нужно делать фантастические вещи , вы можете использовать сборщик Visual Studio (sln). Он делает то же самое, что и когда вы делаете Project-> Build (из меню VS). Эта опция очень проста в настройке, несколько кликов и ваш CI-сервер компилирует ваше решение.

MSBuild
Если вам нужно сделать больше расширенных сценариев , кроме простой компиляции, такой как применение различных файлов конфигурации, вставка преобразованных значений в файл конфигурации, развертывание двоичных файлов и т. Д., Вы должны выбрать опцию MSBuild. Вы будете знать, когда вам нужно это использовать, просто потому, что sln builder не сможет что-то делать. Этот параметр требует определенных знаний языка сценариев сборки, который основан на задачах и похож на XML.

3 голосов
/ 14 февраля 2012

Когда вы используете MSBuild для создания файла .SLN (не документ MSBuild), он генерирует файл MSBuild в памяти, который ссылается на все проекты для сборки в указанной конфигурации, а затем выполняет его.Когда вы используете Visual Studio для сборки, вы вместо этого вызываете DevEnv.com.

Существуют определенные типы проектов (C ++ в 2005/2008 и VDPROJ в 2005/2008/2010), которые не являются файлами MSBuild и могут 'Сборка с использованием только MSBuild.Вы получите предупреждение о сборке, в котором говорится, что один или несколько проектов не были допустимыми проектами MSBuild и не могут быть собраны.

В целом я стараюсь поддерживать машины со скудными и средними сборками и устанавливать Visual Studio только при необходимости.

0 голосов
/ 05 июня 2012

Я заметил очень мало между ними.В частности, в нашем случае нам нужно было создать .vdproj.Теперь после поиска в Google там, где это делают два бегуна, бегун командной строки или Visual Studio (sln).Однако при выполнении типа запуска Visual Studio (sln) мы получили следующую ошибку: «[Предупреждение] C: \ BuildAgent \ work \ 1bd75058d7bca32b \ POS \ PoSWidgetInstaller \ myInstaller.vdproj.metaproj предупреждение MSB4078: Файл проекта« myInstaller \ myInstaller.vdproj "не поддерживается MSBuild и не может быть собран."Я думаю, что тип бегуна Visual Studio (sln) извлекает данные из файла sln, а затем использует их вместе с MSbuild.Не уверен, не могу подтвердить, но только мои мысли об этом.

0 голосов
/ 14 февраля 2012

Если вы используете файлы решения (Visual Studio) таким образом, это означает, что вам необходимо лицензировать копию Visual Studio для вашего сервера сборки вместе с установкой / обслуживанием, которое сопровождает это.Если вы используете MSBuild, вам ничего не нужно, все, что вам нужно, - это установить .net framework.Единственное реальное различие между ними состоит в том, что Visual Studio имеет множество всевозможных переменных окружения и использует такие вещи, как порядок сборки.Хотя MSBuild не имеет никаких переменных окружения, установленных по умолчанию, и не распознает порядок сборки, он только распознает зависимости.Хотя в Visual Studio будет немного легче, и вы не будете время от времени сталкиваться с теми случаями, когда вы зависите от Visual Studio, чтобы скрыть некоторую неряшливость.

...