MSBUILD: ошибка MSB1008: может быть указан только один проект
Почему я получаю следующую ошибку сборки?
C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe C:\Code\EduBenesysNET\EduBenesysNET\EduBenesysNET.vbproj /t:publish /p:Configuration=Release /p:Platform=AnyCPU /v:detailed /p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\" /p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest/" /p:ApplicationVersion=1.0.1.198 /p:ProductName="Total Education TEST" /p:PublisherName="BeneSys, Inc." /p:UpdateRequired="True" /p:MinimumRequiredVersion=1.0.1.198
Microsoft (R) Build Engine Version 3.5.30729.1
[Microsoft .NET Framework, Version 2.0.50727.3603]
Copyright (C) Microsoft Corporation 2007. All rights reserved.
MSBUILD : error MSB1008: Only one project can be specified.
Switch: Education
For switch syntax, type "MSBuild /help"
Я не вижу, как указывается второй проект.
Он где-то хранится в файле проекта?
Ответы
Ответ 1
Решение
Удалите котировки вокруг параметра /p: PublishDir
т.е.
Вместо цитат
/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\"
Использовать кавычки
/p:PublishDir=\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\
Мне жаль, что я не опубликовал свой вывод раньше. Мне действительно нужно было снова исследовать, чтобы увидеть, что нужно изменить. Кто бы мог подумать, что удаление котировок сработало бы? Я обнаружил это при просмотре коллег для другого решения и заметил, что у него нет котировок.
Ответ 2
Оказывается, конечная косая черта в свойстве PublishDir ускользает от котировки конца. Избегание конечной косой проблемы помогло решить мою проблему.
/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\\"
Таким образом, мы можем использовать кавычки для путей, которые имеют пробелы в свойствах, которые MSBuild требует конечной косой черты.
Я знаю, что это старый пост, но мне кажется, что мне нужно поделиться этим с кем-то: -)
Ответ 3
Эта проблема возникает, когда у вас есть путь или свойство, содержащее пробел и которое не цитируется.
Все ваши свойства и путь цитируют их, это странно. Сообщение об ошибке указывает Education
как переключатель, попробуйте удалить /p:ProductName="Total Education TEST"
, чтобы узнать, работает ли он.
Ответ 4
Вам нужно поместить qoutes вокруг имени пути и файла.
Поэтому используйте
MSBuild "C:\Path Name\File Name.Exe" /[Опции]
Ответ 5
Попробуйте удалить завершающую обратную косую черту или косую черту в конце пути публикации и установить url
/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest"
/p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest"
Вы, должно быть, написали специальную последовательность символов с символом\ "и (или)/", но я не знаю достаточно в cmd.exe, чтобы выяснить.
Я всегда использую Powershell: он более дружелюбный и мощный!
Надеюсь, что это поможет!
Ответ 6
В vs2012 просто попробуйте создать определение сборки "Test Build" с использованием шаблона TFS по умолчанию "DefaultTemplate.... xaml" (обычно его копия)
Он будет терпеть неудачу с обычной самоочевидной ошибкой: "MSBUILD: ошибка MSB1008: может быть указан только один проект. Переключение: действия"
Неверный курс где-то в шаблоне TFS по умолчанию, некоторая "
отсутствует, поэтому msbuild получит в качестве параметра небезопасный каталог, содержащий пробелы, что приведет к нескольким проектам (?!)
Поэтому НИКОГДА не используйте пробелы в именах TFS Build Definition, довольно грустных и простых в то же время
Ответ 7
Это сработало для меня в TFS MSBuild Argument. Обратите внимание на количество косых черт.
/p: DefaultPackageOutputDir = "\\ Rdevnet\Проекты Visual Studio\Страхование \"
Ответ 8
Я использовал одинарные кавычки вокруг параметра пароля, когда я получил ошибку
/p:password='my secret'
bad
и изменил его, чтобы использовать двойные кавычки для решения проблемы.
/p:password="my secret"
хороший
Вероятно, то же самое применимо к любому параметру, которому нужны кавычки для значений, содержащих пробел.
Ответ 9
На всякий случай, у кого-то есть такая же проблема, как и я, мне не хватало "/" перед одним из аргументов "/p". Не совсем понятно из описания. Надеюсь, это поможет кому-то.
Ответ 10
Для меня я забыл добавить заключительную цитату
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)
to
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"
Ответ 11
Если вы используете рабочее пространство по умолчанию в Jenkins, это может произойти.
Используйте произвольное расположение рабочего пространства без пробелов.
![введите описание изображения здесь]()