Programing

MSBUILD : 오류 MSB1008 : 하나의 프로젝트 만 지정할 수 있습니다.

lottogame 2020. 8. 17. 09:33
반응형

MSBUILD : 오류 MSB1008 : 하나의 프로젝트 만 지정할 수 있습니다.


다음 빌드 오류가 발생하는 이유는 무엇입니까?

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 버전 3.5.30729.1
[Microsoft .NET Framework, 버전 2.0.50727.3603]
Copyright (C) Microsoft Corporation 2007. 모든 권리 보유.

MSBUILD : 오류 MSB1008 : 하나의 프로젝트 만 지정할 수 있습니다.
스위치 : 교육

스위치 구문의 경우 "MSBuild / help"를 입력합니다.

두 번째 프로젝트가 어떻게 지정되는지 알 수 없습니다.
프로젝트 파일에 어딘가에 저장되어 있습니까?


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"작동하는지 확인 하려면 제거 하십시오.


Git Bash에서는 다음과 같이 이중 슬래시로 매개 변수를 지정해야했습니다.

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

경로와 파일 이름 주위에 qout을 넣어야합니다.
따라서 MSBuild "C : \ Path Name \ File Name.Exe"/ [Options]를 사용하십시오.


게시 경로 끝에서 후행 백 슬래시 또는 슬래시를 제거하고 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"(일반적으로 복사본)을 사용하여 빌드 정의 "Test Build"를 만들어보십시오.

일반적인 자체 설명 오류와 함께 실패합니다. "MSBUILD : 오류 MSB1008 : 하나의 프로젝트 만 지정할 수 있습니다. 스위치 : 활동"

물론 기본 TFS 템플릿의 어딘가에 일부 "가 누락되어 msbuild가 공백을 포함하는 이스케이프되지 않은 디렉터리를 매개 변수로 수신하므로 여러 프로젝트 (?!)

따라서 TFS 빌드 정의 이름에 공백을 사용하지 마십시오. 매우 슬프고 단순합니다.


오류가 발생했을 때 비밀번호 매개 변수를 작은 따옴표로 묶었습니다.

/p:password='my secret' 나쁜

문제를 해결하기 위해 큰 따옴표를 사용하도록 변경했습니다.

/p:password="my secret" 좋은

공백이 포함 된 값에 따옴표가 필요한 모든 매개 변수에도 동일하게 적용됩니다.


미래의 독자를 위해.

지정된 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"

이것에 대한 또 다른 원인과 해결책 : 잘못된 위치, 즉 매개 변수에 공백을 넣지 않았는지 확인하십시오. 내 것은 dotnet -c Release - o /home/some/path( -사이의 공백에 유의 o), 나는 계속해서 경로 자체를 봤는데, 그것은 정확하고 나를 버렸다. 도움이 되었기를 바랍니다. (이것은 Bash에 있었지만 Windows에도 적용되어야 함)


이것은 TFS MSBuild Argument에서 저에게 효과적이었습니다. 슬래시 수에 유의하십시오.

/ p : DefaultPackageOutputDir = "\\ Rdevnet \ Visual Studio Projects \ Insurance \"


For me I had forgot to add closing quote

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

to

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


If you use default workspace in Jenkins, this might occur. Use custom workspace location without any spaces.

enter image description here


Just in case someone has the same issue as me, I was missing "/" before one of the "/p" arguments. Not very clear from the description. I hope this helps someone.

참고URL : https://stackoverflow.com/questions/3779701/msbuild-error-msb1008-only-one-project-can-be-specified

반응형