it-swarm.com.ru

MSBUILD: ошибка MSB1008: можно указать только один проект

Почему я получаю следующую ошибку сборки?

C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe C:\Code\EduBenesysNET\EduBenesysNET\EduBenesysNET.vbproj/t: публикация/p: конфигурация = выпуск/p: платформа = AnyCPU/v: подробно/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 =" ТЕСТ ОБЩЕГО ОБРАЗОВАНИЯ "/ p: PublisherName =" BeneSys, Inc. "/p: UpdateRequired = "True" /p:MinimumRequiredVersion=1.0.1.198
Microsoft (R) Build Engine версии 3.5.30729.1 
 [Microsoft .NET Framework, версия 2.0.50727.3603] 
 Авторское право (C) Microsoft Corporation 2007. Все права защищены .

 MSBUILD: ошибка MSB1008: можно указать только один проект .
 Переключатель: Образование 

 Для синтаксиса переключателя введите "MSBuild /help".__ ,

Я не вижу, как указывается второй проект.
Хранится ли он где-нибудь в файле проекта?

86
Gerhard Weiss

РЕШЕНИЕ
Удалить кавычки вокруг параметра/p: PublishDir

то есть.
Вместо кавычек 

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\"  

Не используйте кавычки 

/p:PublishDir=\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\  

Мне жаль, что я не опубликовал свои находки раньше. Я действительно должен был исследовать снова, чтобы увидеть, что нужно изменить. Кто бы мог подумать, что удаление кавычек сработает? Я обнаружил это при просмотре сборки коллег для другого решения и заметил, что в ней нет кавычек.

33
Gerhard Weiss

Оказывается, косая черта в свойстве PublishDir экранирует конечную кавычку. Избавление от косой черты решило мою проблему.

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\\"

Таким образом, мы можем использовать кавычки для путей, которые имеют пробелы в свойствах, которые MSBuild требует конечной косой черты.

Я знаю, что это старый пост, но я чувствую, что мне нужно было поделиться этим с кем-то :-)

111
Matt

Эта проблема возникает, когда у вас есть путь или свойство, содержащее пробел, и это не в кавычках. 

Все ваши свойства и пути имеют цитаты вокруг них, это странно. Сообщение об ошибке указывает Education в качестве переключателя, попробуйте удалить /p:ProductName="Total Education TEST", чтобы увидеть, работает ли он.

22
Julien Hoarau

В Git Bash я должен был указать параметры с двойной косой чертой, например:

MSBuild.exe "Path\to\Solution.sln" //p:Platform="x86" //p:Configuration=Release //p:AppxBundlePlatforms="x86" 
10
friday

Вы должны поместить qoutes вокруг пути и имени файла.
Поэтому используйте MSBuild "C:\Path Name\File Name.Exe"/[Options]

8
Zamir

Попробуйте удалить косую черту или косую черту в конце пути публикации и установите URL

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest"
/p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest"

Вы, должно быть, нажали специальную последовательность символов с помощью\"и (или) /", но я не знаю достаточно в cmd.exe, чтобы понять.

Я лично всегда использую Powershell: это намного дружелюбнее и мощнее!

Надеюсь, поможет!

4
Cédric Rup

Я использовал одинарные кавычки вокруг параметра пароля, когда я получил ошибку

/p:password='my secret' плохой 

и изменил его, чтобы использовать двойные кавычки для решения проблемы. 

/p:password="my secret" хорошо 

Вероятно, то же самое будет применяться к любому параметру, который нуждается в кавычках для значений, которые содержат пробел. 

2
John K

В vs2012 просто попробуйте создать определение сборки "Test Build", используя шаблон TFS по умолчанию "DefaultTemplate .... xaml" (обычно его копию)

Сбой с обычной самоочевидной ошибкой: «MSBUILD: ошибка MSB1008: можно указать только один проект. Переключатель: Действия»

Конечно, где-то в шаблоне TFS по умолчанию некоторые " отсутствуют, поэтому msbuild получит в качестве параметра неэкранированный каталог, содержащий пробелы, что приведет к нескольким проектам (?!)

Поэтому НИКОГДА не используйте пробелы в именах определений сборки TFS, довольно грустных и простых в то же время

2
user3636264

Еще одна причина и решение этой проблемы: убедитесь, что вы не поставили пробел в неправильном месте, то есть в параметрах; у меня был dotnet -c Release - o /home/some/path (обратите внимание на пробел между - и o), я продолжал смотреть на сам путь, который был правильным и отбросил меня. Надеюсь, это поможет! (это было в Bash, хотя это также должно относиться к Windows)

2
Christian Rondeau

Это сработало для меня в TFS MSBuild Argument. Обратите внимание на количество косых черт.

/ p: DefaultPackageOutputDir = "\\ Rdevnet\Проекты Visual Studio\Страхование \"

1
Mark Monforti

Для меня я забыл добавить заключительную цитату

/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)

в 

/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"

1
RezaRahmati

Для будущих читателей.

Я получил эту ошибку, потому что мой указанный файл LOG содержал пробел:

ДО:

/l:FileLogger,Microsoft.Build.Engine;logfile=c:\Folder With Spaces\My_Log.log

ПОСЛЕ: (который решил это)

/l:FileLogger,Microsoft.Build.Engine;logfile="c:\Folder With Spaces\My_Log.log"
1
granadaCoder

Если вы используете рабочее пространство по умолчанию в Jenkins, это может произойти. Используйте пользовательское местоположение рабочей области без пробелов.

 enter image description here

1
user8537391

На тот случай, если у кого-то возникла та же проблема, что и у меня, мне не хватало "/" перед одним из аргументов "/ p". Не очень понятно из описания. Я надеюсь, что это помогает кому-то.

0
Johnny