MSBUILD: ошибка MSB1008: можно указать только один проект
почему я получаю следующую ошибку построения?
C:WINDOWSMicrosoft.NETFrameworkv3.5msbuild.exe C:CodeEduBenesysNETEduBenesysNETEduBenesysNET.vbproj /t:publish /p:Configuration=Release /p:Platform=AnyCPU /v:detailed /p:PublishDir="BSIIS3c$DATAWEBSITESbenesys.netbenesys.netTotalEducationTest" /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"
Я не вижу, как указывается второй проект.
Он хранится в файле проекта где-то?
13 ответов:
оказывается, конечная косая черта в свойстве PublishDir экранирует конечную цитату. Побег от косой черты решил мою проблему.
/p:PublishDir="\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\"
таким образом, мы можем использовать кавычки для путей, которые имеют пробелы в свойствах, что MSBuild требует Слэша.
Я знаю, это старый пост, но я чувствую, что мне нужно поделиться этим с кем-то :-)
решение
Удалите кавычки вокруг параметра /p: PublishDirт. е.
Вместо кавычек/p:PublishDir="\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\"
Не используйте кавычки
/p:PublishDir=\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\
мне жаль, что я не опубликовал свою находку раньше. Я действительно должен был исследовать снова, чтобы увидеть, что нужно изменить. Кто бы мог подумать, что удаление кавычек сработает? Я обнаружил это при просмотре сборки коллег для другого решения и заметил, что у него нет двойные кавычки.
эта проблема возникает, когда у вас есть путь или свойство, содержащее пробел, и это не в кавычках.
все ваши свойства и путь имеют цитату вокруг них, это странно. Сообщение об ошибке указывает
Education
в качестве переключателя, попробуйте удалить/p:ProductName="Total Education TEST"
чтобы увидеть, если он работает.
вам нужно поместить qoutes вокруг пути и имени файла.
Так что используйте MSBuild "C:\Path Имя\Имя Файла.Exe-Файла" /[Опции]
Попробуйте удалить заднюю косую черту или косую черту в конце пути публикации и установить url
/p:PublishDir="\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest" /p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest"
Вы, должно быть, особая последовательность символов \" и (или) /", но я не знаю достаточно в cmd.exe, чтобы выяснить.
Я лично всегда использую Powershell : это более дружелюбный и мощный!
надеюсь, что это помогает!
в vs2012 просто попробуйте создать определение сборки "тестовая сборка", используя шаблон TFS по умолчанию " DefaultTemplate....xaml " (обычно его копия)
Он будет не с обычными самостоятельного объяснения-ошибка: "в MSBuild : ошибка MSB1008: только один проект может быть указан.Переключатель: Деятельность"
Off конечно где-то в шаблоне TFS по умолчанию некоторые
"
отсутствуют, поэтому msbuild получит в качестве параметра не экранированный каталог, содержащий пробелы, поэтому приведет к нескольким проекты(?!)поэтому никогда не используйте пробелы в именах определений сборки TFS, довольно грустные и простые в то же время
на Git Bash мне пришлось указать параметры с двойными косыми чертами, такими как:
MSBuild.exe "Path\to\Solution.sln" //p:Platform="x86" //p:Configuration=Release //p:AppxBundlePlatforms="x86"
Это сработало для меня в аргументе TFS MSBuild. Обратите внимание на количество косых черт.
/p: DefaultPackageOutputDir= " \\Rdevnet\Visual Studio Projects\Insurance\"
я использовал одинарные кавычки вокруг параметра пароля, когда я получил ошибку
/p:password='my secret'
плохои изменил его, чтобы использовать двойные кавычки, чтобы решить проблему.
/p:password="my secret"
хорошийвероятно, то же самое будет применяться к любому параметру, который нуждается в кавычках для значений, содержащих пробел.
для меня я забыл добавить заключительную цитату
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)
до
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"
на всякий случай, если у кого-то есть такая же проблема, как у меня, я пропустил "/" перед одним из аргументов "/p". Не очень понятно из описания. Надеюсь, это кому-то поможет.