MSBUILD: ошибка MSB1008: можно указать только один проект - PullRequest
96 голосов
/ 23 сентября 2010

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

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"

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

Ответы [ 14 ]

116 голосов
/ 14 декабря 2012

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

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

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

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

34 голосов
/ 03 февраля 2011

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

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

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

Использовать кавычки

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

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

22 голосов
/ 23 сентября 2010

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

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

16 голосов
/ 04 июля 2018

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

MSBuild.exe "Path\to\Solution.sln" //p:Platform="x86" //p:Configuration=Release //p:AppxBundlePlatforms="x86" 
9 голосов
/ 29 января 2011

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

4 голосов
/ 29 января 2011

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

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

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

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

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

2 голосов
/ 13 марта 2019

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

2 голосов
/ 21 марта 2018

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

Я получил эту ошибку, потому что в моем указанном файле 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"
2 голосов
/ 17 августа 2016

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

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

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

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

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

2 голосов
/ 28 августа 2014

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

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

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

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

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