为什么我收到以下构建错误?
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"
我没看到如何指定第二个项目 它存储在某个项目文件中吗?
答案 0 :(得分:115)
事实证明,PublishDir属性中的尾部斜杠是转义结束引号。逃避尾随斜线解决了我的问题。
/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\\"
这样我们可以为MSBuild需要尾部斜杠的属性中具有空格的路径使用引号。
我知道这是一个老帖子,但我觉得我需要与某人分享: - )
答案 1 :(得分:33)
<强>解强>
删除/ p:PublishDir设置周围的引号
即。
而不是引号
/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\"
不使用引号
/p:PublishDir=\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\
对不起,我没有尽快发布我的发现。我实际上不得不再次研究,看看需要改变什么。谁会想到删除引号会起作用?我在查看同事构建另一个解决方案时发现了这一点,并注意到它没有引号。
答案 2 :(得分:22)
如果路径或属性包含空格且未引用,则会出现此问题。
你的所有属性和路径都引用了它们,这很奇怪。该错误消息指示Education
为开关,请尝试删除/p:ProductName="Total Education TEST"
以查看其是否有效。
答案 3 :(得分:15)
在Git Bash上,我必须用双斜杠指定参数,例如:
<!DOCTYPE html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<html>
<head>
<meta charset="utf-8" />
<link rel="shortcut icon" href="//#" />
<script type="text/javascript" src="https://html2canvas.hertzen.com/dist/html2canvas.js"></script>
<script type="text/javascript" src="https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script>
</head>
<body>
<div id="capture" style="padding: 10px; background: #f5da55">
<h4 style="color: #000; ">Helloo world!</h4>
</div>
<div style="padding: 10px; background: pink">
<h4 style="color: #000; ">Helloo world!</h4>
</div>
<div style="padding: 10px; background: black">
<h4 style="color: white; ">Helloo world!</h4>
</div>
<div id="match-button" onclick="sendData();">capture</div>
<a id="test" href="#"></a>
</body>
</html>
答案 4 :(得分:8)
您需要在路径和文件名周围加上引号 所以使用 MSBuild“C:\ Path Name \ File Name.Exe”/ [Options]
答案 5 :(得分:4)
尝试删除发布路径末尾的尾部反斜杠或斜杠并安装网址
/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest"
/p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest"
你必须使用\“和(或)/”命中一个特殊的字符序列,但我不知道cmd.exe中有足够的数字来解决。
我个人总是使用Powershell:它更加友好和强大!
希望它有所帮助!
答案 6 :(得分:2)
在vs2012中,尝试使用默认的TFS模板“DefaultTemplate .... xaml”(通常是它的副本)创建构建定义“Test Build”
通常的自解释错误将失败:“MSBUILD:错误MSB1008:只能指定一个项目。开关:活动”
当然在默认TFS模板中的某个地方缺少某些"
,因此msbuild将接收包含空格的非转义目录作为参数,因此将导致多个项目(?!)
所以永远不要在你的TFS Build Definition名称中使用空格,同时非常悲伤和简单
答案 7 :(得分:2)
当我收到错误
时,我在密码参数周围使用单引号 /p:password='my secret'
不好
并将其更改为使用双引号来解决问题。
/p:password="my secret"
好
可能同样适用于需要包含空格的值的引用的任何参数。
答案 8 :(得分:2)
还有另一个原因和解决方案:检查您没有在错误的地方(即参数中)放置空格;我的是dotnet -c Release - o /home/some/path
(请注意-
和o
之间的空格),我一直在寻找路径本身,这是正确的,并把我甩了出去。希望有帮助! (虽然它也适用于Windows,但在Bash中使用)
答案 9 :(得分:2)
为未来的读者。
我收到此错误,因为我指定的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"
答案 10 :(得分:1)
对我来说,我忘了添加收尾报价
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)
到
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"
答案 11 :(得分:1)
如果您使用的是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'
答案 12 :(得分:1)
答案 13 :(得分:1)
这在TFS MSBuild Argument中适用于我。请注意斜杠的数量。
/ p:DefaultPackageOutputDir =“\\ Rdevnet \ Visual Studio Projects \ Insurance \”
答案 14 :(得分:0)
万一有人和我有同样的问题,我在其中一个“/ p”参数之前错过了“/”。从描述中不是很清楚。我希望这有助于某人。
答案 15 :(得分:0)
答案 16 :(得分:0)
我确实使用了https://www.codingdefined.com/2014/10/solved-msbuild-error-msb1008-only-one.html中给出的解决方案,从而解决了该问题。我们需要做的就是在命令中检查空格和''(检查反斜杠)
答案 17 :(得分:0)
对我来说,在双引号中添加解决方案文件的路径解决了这个问题。路径中的一个文件夹的名称中有一个空格,这导致它考虑 2 个解决方案文件而不是一个。 我在下面执行了它并且它起作用了。
MSBuild.exe "C:\Folder Name With Space\Project\project.sln"
答案 18 :(得分:0)
我用一个非常简单的命令遇到了这个问题,它不包含任何引号、任何空格、任何斜杠、任何奇怪的东西。
我使用的是 MINGW64 外壳。
来自 PowerShell 的完全相同的命令反而起作用了。