首页 文章

MSBUILD:错误MSB1008:只能指定一个项目

提问于
浏览
80

为什么我收到以下Build错误?

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"

我没有看到如何指定第二个项目 .
它存储在某个项目文件中吗?

13 回答

  • 21

    事实证明,PublishDir属性中的尾部斜杠是转义结束引号 . 逃避尾随斜线解决了我的问题 .

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

    这样我们可以为MSBuild需要尾部斜杠的属性中具有空格的路径使用引号 .

    我知道这是一个老帖子,但我觉得我需要与某人分享这个:-)

  • 102

    SOLUTION
    删除/ p:PublishDir设置周围的引号


    而不是报价

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

    不使用引号

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

    对不起,我没有尽快发布我的发现 . 我实际上不得不再次研究,看看需要改变什么 . 谁会想到删除引号会起作用?我在查看同事构建另一个解决方案时发现了这一点,并注意到它没有引号 .

  • 1

    如果路径或属性包含空格且未引用,则会出现此问题 .

    你的所有属性和路径都引用了它们,这很奇怪 . 错误消息指示 Education 作为开关,尝试删除 /p:ProductName="Total Education TEST" 以查看它是否有效 .

  • 2

    您需要在路径和文件名周围放置qoutes .
    所以使用MSBuild "C:\Path Name\File Name.Exe" / [选项]

  • 5

    在Git Bash上我必须用双斜杠指定参数,如:

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

    尝试删除发布路径末尾的尾部反斜杠或斜杠并安装URL

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

    你必须使用\“和(或)/”命中一个特殊的字符序列,但我不知道在cmd.exe中找不到 .

    我个人总是使用Powershell:它更友好,更强大!

    希望能帮助到你!

  • 0

    在vs2012中,尝试使用默认TFS模板“DefaultTemplate .... xaml”(通常是它的副本)创建构建定义“Test Build”

    通常的自解释错误将失败:“MSBUILD:错误MSB1008:只能指定一个项目 . 开关:活动”

    当然在默认TFS模板的某个地方有些 " 缺失,所以msbuild将接收一个包含空格的非转义目录作为参数,因此会导致多个项目(?!)

    因此,永远不要在TFS Build Definition名称中使用空格,同时非常悲伤和简单

  • 1

    当我收到错误时,我在密码参数周围使用单引号

    /p:password='my secret' 不好

    并将其更改为使用双引号来解决问题 .

    /p:password="my secret"

    可能同样适用于需要包含空格的值的引用的任何参数 .

  • 6

    这在TFS MSBuild Argument中对我有用 . 注意斜杠的数量 .

    / p:DefaultPackageOutputDir =“\ Rdevnet \ Visual Studio Projects \ Insurance \”

  • 0

    对我来说,我忘了添加收尾报价

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

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

  • -1

    万一有人和我有同样的问题,我在其中一个“/ p”参数之前错过了“/” . 从描述中不是很清楚 . 我希望这可以帮助别人 .

  • 30

    对于未来的读者 .

    我收到此错误,因为我指定的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"
    
  • 4

    如果在Jenkins中使用默认工作区,则可能会发生这种情况 . 使用不带任何空格的自定义工作空间

    enter image description here

相关问题