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, это может произойти. Используйте произвольное расположение рабочего пространства без пробелов.

введите описание изображения здесь