msbuild를 사용하여 솔루션의 프로젝트 파일 지정
devenv.com에서와 같이 msbuild를 사용하여 솔루션의 특정 프로젝트를 빌드하기위한 명령 줄을 원합니다. devenv.com에서 다음 명령 줄을 사용하여 솔루션 프로젝트를 지정할 수 있습니다.
devenv.com /Build Release|x86 test.sln /project "testproject"
위의 명령 줄을 사용하여 devenv.com을 사용하여 test.sln에서 testproject를 빌드 할 수 있습니다. 동일한 솔루션에 대한 msbuild의 명령 줄은 무엇입니까?
감사
msbuild test.sln /t:project /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false
할당 된 /t
것은 솔루션의 프로젝트 이름이며 프로젝트 파일 이름과 다를 수 있습니다.
또한 방법 : MSBuild.exe를 사용하여 솔루션에서 특정 대상 빌드에 설명 된대로 :
프로젝트 이름은 임의의 문자가 포함 된 경우
%
,$
,@
,;
,.
,(
,)
, 또는'
,로 교체_
지정된 대상 이름입니다.
한 번에 여러 프로젝트를 빌드 할 수도 있습니다.
msbuild test.sln /t:project;project2 /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false
다시 빌드하거나 깨끗 변경하려면 /t:project
에 /t:project:clean
나/t:project:rebuild
MSBuild는 실제로 솔루션이 아닌 프로젝트를 사용하여 작동합니다. 이 솔루션은 내부적으로 MSBuild의 임시 프로젝트 파일로 구문 분석하는 데만 사용됩니다. 다음 명령을 실행하여 MSBuild를 통해 직접 관심있는 프로젝트를 빌드 할 수 있어야합니다.
"msbuild testproject /p:Configuration=Release /p:Platform=x86"
솔루션 대신 프로젝트를 직접 사용할 수있는 한 가지 주요 문제가 있습니다. 프로젝트에 대한 참조를 추가하고 빌드 시스템이 종속성을 자동으로 해결하도록하는 대신 솔루션을 사용하여 프로젝트 간의 종속성을 표현하는 경우 .
sln 파일을 사용하여 빌드 순서를 적용하는 경우 이러한 종속성을 proj 파일에서 직접 작업하고 sln에서 제거하는 것이 좋습니다. 이렇게하면 MSBuild에서 모든 proj 파일을 직접 호출 할 수 있으며 프로젝트는 추가 작업없이 모두 독립적으로 빌드됩니다. 실제로 sln 파일을 빌드 입력이 아닌 Visual Studio에서 더 쉽게 작업 할 수 있도록 프로젝트 그룹으로 처리해야합니다.
미래 구직자에게 정보로 게시
빌드 스크립트에 다음을 추가하고 한 번 실행하십시오. 그러면 msbuild가 실제로 사용할 정확한 대상 및 기타 정보가 생성됩니다.
예 : 당신이있는 경우 .
프로젝트 이름이나 폴더에 msbuild를 예상됩니다 _
의 장소에서 .
.
set MSBuildEmitSolution=1
정보를 얻은 후 필요한 세부 정보로 빌드 스크립트를 업데이트합니다.
추가 정보를 추가하기 위해 프로젝트 폴더에서 msbuild를 실행하면 기본적으로 프로젝트 파일이 빌드됩니다.
>msbuild
이러한 방식으로 msbuild를 사용하는 방법에는 여러 가지가 있습니다. proj 파일을 직접 지정할 수 있습니다.
>msbuild helloworld.csproj -t:Build.
사용, proj 파일 요구 사항 및 솔루션 대신 프로젝트 빌드의 이점에 대한 msbuild 설명서를 검토하십시오.
위의 마크 스미스가 언급 한 것처럼 이러한 방식으로 구축하면 이점이 있습니다.
이렇게하려면 프로젝트 이름 이 아닌 프로젝트의 대상 이름 이 무엇인지 알아야합니다 .
이를 확인하는 한 가지 방법은 .NET Framework MSBuildEmitSolution
의 값으로 호출되는 특수 환경 변수를 설정 한 후 의도 한 매개 변수로 SLN에 대해 MSBuild를 사용하는 것 입니다 1
.
set MSBuildEmitSolution=1
msbuild my_stuff.sln /t:rebuild /p:Configuration=Release /p:Platform=x64
최근에 중첩 된 디렉터리의 대상에 대한 매우 구체적인 이름 때문에이 작업을 수행해야했습니다. 그래서 생성 된 파일 my_stuff.sln.metaproj
에서 다음 줄을 찾았습니다.
<Target Name="Utils\Firewall\FirewallUtils:Rebuild">
즉, 사용할 명령 줄은 결국
msbuild my_stuff.sln /t:Utils\Firewall\FirewallUtils:Rebuild /p:Configuration=Release /p:Platform=x64
참고 URL : https://stackoverflow.com/questions/13915636/specify-project-file-of-a-solution-using-msbuild
'code' 카테고리의 다른 글
Rsync는 디렉토리 내용을 복사하지만 디렉토리 자체는 복사하지 않습니다. (0) | 2020.08.16 |
---|---|
하나의 쿼리에서 MySQL 다중 조인? (0) | 2020.08.16 |
튜플이 목록보다 메모리 공간을 덜 차지하는 이유는 무엇입니까? (0) | 2020.08.16 |
메타 클래스의 (구체적인) 사용 사례는 무엇입니까? (0) | 2020.08.16 |
EL에서 상수를 참조하는 방법은 무엇입니까? (0) | 2020.08.16 |