MSBUILD : error MSB1008: Only one project can be specified. Switch: FilesMicrosoft For switch syntax, type «MSBuild /help»
-
Question
-
MSBUILD : error MSB1008: Only one project can be specified. Switch: FilesMicrosoft For switch syntax, type «MSBuild /help»
Answers
-
The error usually comes because of the space in arguments. Try to add the double quotes to path of solution and then
try again.-
Marked as answer by
John QiaoModerator
Friday, January 21, 2011 4:28 AM
-
Marked as answer by
All replies
-
The error usually comes because of the space in arguments. Try to add the double quotes to path of solution and then
try again.-
Marked as answer by
John QiaoModerator
Friday, January 21, 2011 4:28 AM
-
Marked as answer by
-
Hi Muhammad,
Thanks for your post.
As Jehan said that the space is interpreted as multiple projects, you should to add the “ character around the sln file, like this: msbuild.exe “c:……project1.sln”.
Has this issue been resolved?
John Qiao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help. -
I am having the same problem. I’ve got this to work but sometimes it doesn’t. What am I doing wrong ?
msbuild «C:developSEIExplorerSQExplorerSEIExplorer_2005.csproj» /target:publish p:InstallUrl=\sv-qnap1.seismicventures.comdataseiexplorer /p:PublishDir=\sv-qnap1.seismicventures.comdataseiexplorer /p:ApplicationRevision=1 /p:Application=300* /p:PublisherName=»SEI»
/p:ProductName=»Seismic Explorer»I’m really desperate to get this working as I have to deliver my app to two distinct servers and the versions need to be consistent with one another but the installs seperate.
thanks,
kyle
-
Proposed as answer by
Riccardo Ballarino
Thursday, August 28, 2014 10:18 AM
-
Proposed as answer by
-
In vs2012 just try to create a Build definition «Test Build» using the default TFS template «DefaultTemplate….xaml» (usually a copy of it)
It will fail with the usual self-explaining-error : «MSBUILD : error MSB1008: Only one project can be specified.Switch: Activities»
Off course somewhere in the default TFS template some » are missing so msbuild will receive as parameter a non escaped directory containing spaces so will result in multiple projects(?!)
So NEVER use spaces in you TFS Build Definition names, pretty sad and simple at the same time
MSBUILD : error MSB1008: Only one project can be specified. Switch: FilesMicrosoft For switch syntax, type «MSBuild /help»
-
Question
-
MSBUILD : error MSB1008: Only one project can be specified. Switch: FilesMicrosoft For switch syntax, type «MSBuild /help»
Answers
-
The error usually comes because of the space in arguments. Try to add the double quotes to path of solution and then
try again.-
Marked as answer by
John QiaoModerator
Friday, January 21, 2011 4:28 AM
-
Marked as answer by
All replies
-
The error usually comes because of the space in arguments. Try to add the double quotes to path of solution and then
try again.-
Marked as answer by
John QiaoModerator
Friday, January 21, 2011 4:28 AM
-
Marked as answer by
-
Hi Muhammad,
Thanks for your post.
As Jehan said that the space is interpreted as multiple projects, you should to add the “ character around the sln file, like this: msbuild.exe “c:……project1.sln”.
Has this issue been resolved?
John Qiao [MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help. -
I am having the same problem. I’ve got this to work but sometimes it doesn’t. What am I doing wrong ?
msbuild «C:developSEIExplorerSQExplorerSEIExplorer_2005.csproj» /target:publish p:InstallUrl=\sv-qnap1.seismicventures.comdataseiexplorer /p:PublishDir=\sv-qnap1.seismicventures.comdataseiexplorer /p:ApplicationRevision=1 /p:Application=300* /p:PublisherName=»SEI»
/p:ProductName=»Seismic Explorer»I’m really desperate to get this working as I have to deliver my app to two distinct servers and the versions need to be consistent with one another but the installs seperate.
thanks,
kyle
-
Proposed as answer by
Riccardo Ballarino
Thursday, August 28, 2014 10:18 AM
-
Proposed as answer by
-
In vs2012 just try to create a Build definition «Test Build» using the default TFS template «DefaultTemplate….xaml» (usually a copy of it)
It will fail with the usual self-explaining-error : «MSBUILD : error MSB1008: Only one project can be specified.Switch: Activities»
Off course somewhere in the default TFS template some » are missing so msbuild will receive as parameter a non escaped directory containing spaces so will result in multiple projects(?!)
So NEVER use spaces in you TFS Build Definition names, pretty sad and simple at the same time
Почему я получаю следующую ошибку сборки?
C: WINDOWS Microsoft.NET Framework v3.5 msbuild.exe C: Code EduBenesysNET EduBenesysNET EduBenesysNET.vbproj / t: publish / p: Configuration = Release / p: Platform = 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 =" Total Education TEST "/ 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: можно указать только один проект. Switch: Education Для синтаксиса переключателя введите "MSBuild / help"
Я не вижу, как уточняется второй проект.
Он хранится где-нибудь в файле проекта?
19 ответы
Оказывается, завершающая косая черта в свойстве PublishDir экранирует конечную кавычку. Избегая косой черты, я решил мою проблему.
/p:PublishDir="\BSIIS3c$DATAWEBSITESbenesys.netbenesys.netTotalEducationTest\"
Таким образом, мы можем использовать кавычки для путей, у которых есть пробелы в свойствах, которые MSBuild требует завершающей косой черты.
Я знаю, что это старый пост, но мне кажется, что мне нужно поделиться им с кем-нибудь
ответ дан 14 дек ’12, 05:12
РЕШЕНИЕ
Удалите кавычки вокруг параметра / p: PublishDir
т.е.
Вместо цитат
/p:PublishDir="\BSIIS3c$DATAWEBSITESbenesys.netbenesys.netTotalEducationTest"
Не используйте кавычки
/p:PublishDir=\BSIIS3c$DATAWEBSITESbenesys.netbenesys.netTotalEducationTest
Мне очень жаль, что я не опубликовал свое открытие раньше. Мне действительно пришлось снова исследовать, чтобы увидеть, что нужно изменить. Кто бы мог подумать, что удаление кавычек сработает? Я обнаружил это, когда просматривал сборку коллег для другого решения, и заметил, что в нем нет цитат.
ответ дан 08 дек ’17, 13:12
В Git Bash мне пришлось указать параметры с двойными косыми чертами, например:
MSBuild.exe "PathtoSolution.sln" //p:Platform="x86" //p:Configuration=Release //p:AppxBundlePlatforms="x86"
Создан 04 июля ’18, 11:07
Эта проблема возникает, когда у вас есть путь или свойство, содержащее пробел и не заключенное в кавычки.
Все ваши свойства и путь имеют кавычки, это странно. Сообщение об ошибке указывает Education
в качестве переключателя попробуйте удалить /p:ProductName="Total Education TEST"
чтобы увидеть, работает ли он.
Создан 23 сен.
Вам нужно поставить кавычки вокруг пути и имени файла.
Поэтому используйте MSBuild «C: Path Name File Name.Exe» / [Параметры]
Создан 29 янв.
Попробуйте удалить обратную косую черту или косую черту в конце пути публикации и установить URL
/p:PublishDir="\BSIIS3c$DATAWEBSITESbenesys.netbenesys.netTotalEducationTest"
/p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest"
Вы, должно быть, набрали особую последовательность символов с «и (или) /», но я недостаточно знаю cmd.exe, чтобы понять.
Лично я всегда использую Powershell: он намного удобнее и мощнее!
Надеюсь, поможет!
Создан 29 янв.
В vs2012 просто попробуйте создать определение сборки «Test Build», используя шаблон TFS по умолчанию «DefaultTemplate …. xaml» (обычно его копию)
Произойдет сбой с обычной самоочевидной ошибкой: «MSBUILD: ошибка MSB1008: можно указать только один проект. Переключатель: Действия»
Конечно, где-то в шаблоне TFS по умолчанию какой-то "
отсутствуют, поэтому msbuild получит в качестве параметра неэкранированный каталог, содержащий пробелы, что приведет к созданию нескольких проектов (?!)
Так что НИКОГДА не используйте пробелы в именах TFS Build Definition, довольно грустных и простых одновременно.
ответ дан 28 авг.
Я заключил параметр пароля в одинарные кавычки, когда получил сообщение об ошибке
/p:password='my secret'
плохой
и изменил его, чтобы использовать двойные кавычки для решения проблемы.
/p:password="my secret"
хорошо
Вероятно, то же самое применимо к любому параметру, которому нужны кавычки для значений, содержащих пробел.
ответ дан 17 авг.
Для меня я забыл добавить заключительную цитату
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)
в
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"
ответ дан 05 окт ’17, 21:10
Еще одна причина и решение: проверьте, не поставили ли вы пробел не в том месте, то есть в параметрах; мой был dotnet -c Release - o /home/some/path
(обратите внимание на пробел между -
и o
), Я все смотрел на саму тропинку, которая была правильной и сбивала меня с толку. Надеюсь, это поможет! (это было в Bash, хотя это также должно относиться к Windows)
ответ дан 13 мар ’19, в 02:03
Это сработало для меня в аргументе TFS MSBuild. Обратите внимание на количество косых черт.
/ p: DefaultPackageOutputDir = «\ Rdevnet Visual Studio Projects Insurance «
Создан 24 фев.
Если вы используете рабочее пространство по умолчанию в Jenkins, это может произойти. Используйте настраиваемое расположение рабочего пространства без пробелов.
ответ дан 26 окт ’17, 17:10
Для будущих читателей.
Я получил эту ошибку, потому что в моем указанном файле журнала было пробел:
ДО:
/l:FileLogger,Microsoft.Build.Engine;logfile=c:Folder With SpacesMy_Log.log
ПОСЛЕ: (который решил это)
/l:FileLogger,Microsoft.Build.Engine;logfile="c:Folder With SpacesMy_Log.log"
ответ дан 21 мар ’18, в 13:03
Если вы используете Azure DevOps MSBuild
задача ошибка может быть вызвана двойным флагом конфигурации. Пожалуйста, убедитесь, что вы положили $(BuildConfiguration)
в указанном поле вместо одного аргумента MSBuild:
ответ дан 04 дек ’19, 15:12
Если вы используете Any CPU
вам может потребоваться заключить его в одинарные кавычки.
Конечно, при запуске в Dockerfile мне приходилось использовать одинарные кавычки:
# Fails. Gives: MSBUILD : error MSB1008: Only one project can be specified.
RUN msbuild ConsoleAppFw451.sln /p:Configuration=Debug /p:Platform="Any CPU"
# Passes. Gives: Successfully built 40163c3e0121
RUN msbuild ConsoleAppFw451.sln /p:Configuration=Debug /p:Platform='Any CPU'
Создан 10 янв.
На всякий случай, если у кого-то такая же проблема, как у меня, я пропустил «/» перед одним из аргументов «/ p». Не очень понятно из описания. Я надеюсь, что это поможет кому-то.
Создан 21 сен.
ответ дан 09 авг.
Для меня добавление пути к файлу решения в двойных кавычках решило проблему. В имени одной из папок в пути было пустое место, и это заставляло рассматривать 2 файла решения вместо одного. Я выполнил следующее, и это сработало.
MSBuild.exe "C:Folder Name With SpaceProjectproject.sln"
Создан 12 янв.
Я столкнулся с этой проблемой с помощью очень простой команды, в которой не было ни кавычек, ни пробелов, ни косой черты, ничего странного.
Я использовал оболочку MINGW64.
Вместо этого работала та же самая команда из PowerShell.
ответ дан 15 мар ’21, в 11:03
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
visual-studio
visual-studio-2008
msbuild
or задайте свой вопрос.