为什么我收到以下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 回答
事实证明,PublishDir属性中的尾部斜杠是转义结束引号 . 逃避尾随斜线解决了我的问题 .
这样我们可以为MSBuild需要尾部斜杠的属性中具有空格的路径使用引号 .
我知道这是一个老帖子,但我觉得我需要与某人分享这个:-)
SOLUTION
删除/ p:PublishDir设置周围的引号
即
而不是报价
不使用引号
对不起,我没有尽快发布我的发现 . 我实际上不得不再次研究,看看需要改变什么 . 谁会想到删除引号会起作用?我在查看同事构建另一个解决方案时发现了这一点,并注意到它没有引号 .
如果路径或属性包含空格且未引用,则会出现此问题 .
你的所有属性和路径都引用了它们,这很奇怪 . 错误消息指示
Education
作为开关,尝试删除/p:ProductName="Total Education TEST"
以查看它是否有效 .您需要在路径和文件名周围放置qoutes .
所以使用MSBuild "C:\Path Name\File Name.Exe" / [选项]
在Git Bash上我必须用双斜杠指定参数,如:
尝试删除发布路径末尾的尾部反斜杠或斜杠并安装URL
你必须使用\“和(或)/”命中一个特殊的字符序列,但我不知道在cmd.exe中找不到 .
我个人总是使用Powershell:它更友好,更强大!
希望能帮助到你!
在vs2012中,尝试使用默认TFS模板“DefaultTemplate .... xaml”(通常是它的副本)创建构建定义“Test Build”
通常的自解释错误将失败:“MSBUILD:错误MSB1008:只能指定一个项目 . 开关:活动”
当然在默认TFS模板的某个地方有些
"
缺失,所以msbuild将接收一个包含空格的非转义目录作为参数,因此会导致多个项目(?!)因此,永远不要在TFS Build Definition名称中使用空格,同时非常悲伤和简单
当我收到错误时,我在密码参数周围使用单引号
/p:password='my secret'
不好并将其更改为使用双引号来解决问题 .
/p:password="my secret"
好可能同样适用于需要包含空格的值的引用的任何参数 .
这在TFS MSBuild Argument中对我有用 . 注意斜杠的数量 .
/ p:DefaultPackageOutputDir =“\ Rdevnet \ Visual Studio Projects \ Insurance \”
对我来说,我忘了添加收尾报价
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)
至
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"
万一有人和我有同样的问题,我在其中一个“/ p”参数之前错过了“/” . 从描述中不是很清楚 . 我希望这可以帮助别人 .
对于未来的读者 .
我收到此错误,因为我指定的LOG文件中有一个空格:
之前:
之后:(解决了它)
如果在Jenkins中使用默认工作区,则可能会发生这种情况 . 使用不带任何空格的自定义工作空间