ошибка MSB4057: Цель "D: \ Projects \ Source \ Demo \ ProjectA" не существует в проекте.
Ошибка указывает, что ваш путь в команде недопустим и project.sln не может распознать путь. Таким образом, вы на самом деле встречаете одну проблему, связанную с путем. И вы должны передать ProjectA
аргументу целей вместо ProjectA.csproj
! Подробнее см. Tip3 в Для MSBuild .
Для MSBuild:
1.Если вы только пытаетесь собрать ProjectA и его справочные библиотеки .
Перейдите (cd
) к пути, где существует ProjectA.csproj
, и затем используйте команду msbuild ProjectA.csproj /t:build /p:Configuration=Debug /p:platform=x86
Также вы можете напрямую использовать команду msbuild AbsolutePath\ProjectA.csproj /t:build /p:Configuration=Debug /p:platform=x86
. Нет необходимости использовать "
для покрытия пути и аргументов.
(файл ProjectA.csproj должен содержать определения относительно ссылки на эти два библиотечных проекта, поэтому msbuild ProjectA.csproj
сначала создаст эти два проекта. не нужно указывать xx.sln в вашей команде.)
2.Если вы пытаетесь построить полное решение (все проекты):
msbuild project.sln /t:build /p:Configuration=xxx /p:platform=xxx
Перейдите к решению папку, когда вы запускаете команду, указанную выше, или используйте absolutepath\project.sln
с этой командой.
3. Когда вы хотите построить конкретные c проекты (более одного) в решении:
Check Как: построить Specifi c целей в решениях с помощью MSBuild.exe . Поскольку вы только строите ProjectA, вам не нужно использовать этот формат. Например: только когда вам нужно построить ProjectA и ProjectB, но не построить Project C ... Вы можете использовать команду, например:
msbuild xxx.sln /t:NotInSlnfolder:Build;NewFolder\InSolutionFolder:Build
Обратите внимание на путь при использовании этого формата. Находится ли ваш проект в папке решений, может сильно повлиять на результат сборки! И, прямая причина вашей проблемы, аргумент этой команды targets
требует один ProjectName
в качестве ввода вместо ProjectName.csproj
.
Для команды Devenv:
1. Я всегда использую VS2017 и VS2019, поэтому я не уверен, что команда VS2015, связанная с devenv, имеет большое отличие от команд VS2017 или VS2019. Но в соответствии с подробностями из этого документа VS2017 :
Команды, начинающиеся с devenv, обрабатываются утилитой devenv.com, которая обеспечивает вывод через стандартные системные потоки, такие как stdout и STDERR. Кроме того, команды, начинающиеся с devenv.exe, могут использовать те же параметры, но утилита devenv.com обойдена. Непосредственное использование devenv.exe предотвращает появление вывода на консоли .
Я думаю, поэтому вы не видите никаких сообщений после выполнения команды. Вы должны использовать команду devenv.com
, чтобы увидеть вывод в консоли. И по замыслу devenv.exe
будет препятствовать выводу вывода на консоль.
2. Следующая команда создает проект CSharpWinApp
, используя Debug
конфигурацию сборки проекта в MySolution
.
devenv "%USERPROFILE%\source\repos\MySolution.sln" /build Debug /project "CSharpWinApp\CSharpWinApp.csproj" /projectconfig Debug
Подробнее о devenv
справке, пожалуйста, проверьте этот документ .
Кроме того:
1. Выглядит как у вас есть одна странная структура проекта. Я проверил ваше сообщение об ошибке выше, и кажется, что несколько ваших проектов (xx.csproj) не находятся в папке Solution (xx.sln). Просто предложение, нормальная структура папок для VS2015 всегда такова:
Solution folder
xx.sln
ProjectA folder
ProjectA.csproj
ProjectB folder
ProjectB.csproj
2. Для большинства проектов сборка с использованием msbuild
является более мощной и удобной, чем сборка с использованием devenv
. Поэтому, если у вас нет особых причин, я рекомендую использовать Msbuild
, движок сборки VS.
Надеюсь, все вышеперечисленное поможет решить вашу проблему и загадку. Дайте мне знать, если ваша проблема не устранена:)