Мне нужна командная строка для создания конкретного проекта решения с использованием msbuild, как мы делаем с devenv.com. В devenv.com мы можем указать проект решения, используя следующую командную строку
devenv.com /Build Release|x86 test.sln /project "testproject"
Используя приведенную выше командную строку, я могу создать тестовый проект в test.sln, используя devenv.com. Какова командная строка для msbuild для того же решения.
Спасибо
Ответы:
Обратите внимание на то, что присвоено
/t
в решении имя проекта, оно может отличаться от имени файла проекта.Кроме того, как указано в разделе Практическое руководство. Создание конкретных целей в решениях с помощью MSBuild.exe :
Вы также можете создать сразу несколько проектов:
Чтобы восстановить или очистить, измените
/t:project
на/t:project:clean
или/t:project:rebuild
источник
/t
параметр для каждого проекта, который нужно построить:msbuild test.sln /t:project /t:project2
/t:SlnFolder\My_Project_name
.MSBuild на самом деле работает за счет использования проектов, а не решения. Решение используется только для внутреннего синтаксического анализа во временный файл проекта в MSBuild. Вы должны иметь возможность просто создать интересующий проект непосредственно через MSBuild, выполнив следующую команду.
Я знаю, что есть одна серьезная проблема, с которой вы можете столкнуться при использовании проекта напрямую вместо решения: если вы используете решение для выражения зависимостей между проектами, вместо добавления ссылок на проект и разрешения системе сборки автоматически определять зависимости. .
Если вы обеспечиваете порядок сборки с помощью файла sln, я рекомендую работать с этими зависимостями непосредственно в файлах proj и удалять их из файла sln. Это позволит вам напрямую вызывать любой proj-файл из MSBuild, и все проекты будут построены независимо без какой-либо дополнительной работы. Вам действительно следует рассматривать файл sln как группу проектов, чтобы упростить работу в Visual Studio, а не как входные данные для сборки.
источник
Размещение информации для будущих соискателей
Добавьте следующее в сценарий сборки и запустите его один раз. Это сгенерирует точные цели и другую информацию, которую действительно будет использовать msbuild.
Пример: если у вас есть
.
имя проекта или папки, которые будут ожидать msbuild_
вместо.
.После получения информации обновите скрипт сборки, указав необходимые данные.
источник
Для этого вам нужно знать, какое целевое имя проекта проекта, а не обязательно имя проекта.
Один из способов узнать это - использовать MSBuild для вашего SLN с заданными параметрами после установки специальной переменной среды, вызываемой
MSBuildEmitSolution
для значения1
.Недавно мне пришлось сделать это из-за очень специфического имени цели во вложенных каталогах. Итак, из моего сгенерированного файла
my_stuff.sln.metaproj
я нашел эту строку:<Target Name="Utils\Firewall\FirewallUtils:Rebuild">
Это означает, что в конечном итоге используемая командная строка выглядит так:
источник
.csproj
в моем случае). Я <3 ТАК!Чтобы добавить дополнительную информацию, выполнение msbuild в папке проекта по умолчанию создаст файл проекта, поскольку он единственный там.
Есть много вариантов использования msbuild таким образом. Вы можете указать файл proj напрямую.
Ознакомьтесь с документацией msbuild, чтобы узнать об использовании, требованиях к файлам proj, а также о преимуществах сборки проекта вместо решения.
Документация по MS MSBuild
Как упоминал mark-smith выше, у такого строительства есть свои преимущества.
источник