MSBuild 스크립트에서 현재 디렉터리를 얻으려면 어떻게해야합니까?
내 MSBuild 스크립트에서 전체 디렉터리를 매개 변수로 전달해야합니다. 어떻게받을 수 있습니까?
예 : C : \ dev에서 스크립트를 실행 중이고 상대 경로 temp를 원하므로 C : \ dev \ temp 다음에 있습니다.
참고 : 스크립트가 어느 폴더에서 실행 될지 모르겠습니다.
이고르는 꽤 가깝습니다. MSBuildProjectDirectory
명령 줄에서 호출 된 프로젝트 파일의 전체 경로를 제공하는 속성입니다. 따라서 다음 스크립트가있는 경우 :
- C : \ temp \ MyProj.proj
- C : \ shared \ shared.targets
그리고 MyProj.proj
imports shared.targets
와 이것은 msbuild.exe에 전달 된 MSBuildProjectDirectory
것 입니다. 그러면 shared.targets 내부에서 참조하는 경우에도 값 은 항상 C : \ temp 가됩니다. shared.targets에 경로 정보가 필요한 경우 알려진 속성에서 선언해야합니다. 예를 들어 C # 프로젝트 파일은 값을 정의 OutputPath
하고 공유 파일 Microsoft.Common.targets
은 해당 속성을 사용합니다.
편집 : MSBuild 4
MSBuild 4를 사용하는 경우 이제이 유형의 값에 대한 속성을 사용할 수 있습니다.
- MSBuildThisFile
- MSBuildThisFileDirectory
- MSBuildThisFileDirectoryNoRoot
- MSBuildThisFileExtension
- MSBuildThisFileFullPath
- MSBuildThisFileName
http://sedodream.com/2010/03/11/MSBuild40ReservedProperties.aspx를 참조 하십시오 .
다음은 도움이되는 3 가지 목표입니다.
WhereAmI는 물론 현재 디렉토리를 파악하려고 할 때 사용하는 것입니다. 다른 것 역시 유익합니다. (일부는 질문의 범위를 벗어납니다).
<Target Name="WhereAmI">
<Message Text=" Here I Am " />
<Exec Command="dir ." />
<Message Text=" " />
</Target>
<Target Name="ShowReservedProperties" AfterTargets="BeforeBuild">
<Message Text=" MSBuildProjectDirectory = $(MSBuildProjectDirectory)" Importance="high" />
<Message Text=" MSBuildProjectFile = $(MSBuildProjectFile)" Importance="high" />
<Message Text=" MSBuildProjectExtension = $(MSBuildProjectExtension)" Importance="high" />
<Message Text=" MSBuildProjectFullPath = $(MSBuildProjectFullPath)" Importance="high" />
<Message Text=" MSBuildProjectName = $(MSBuildProjectName)" Importance="high" />
<Message Text=" MSBuildBinPath = $(MSBuildBinPath)" Importance="high" />
<Message Text=" MSBuildProjectDefaultTargets = $(MSBuildProjectDefaultTargets)" Importance="high" />
<Message Text=" MSBuildExtensionsPath = $(MSBuildExtensionsPath)" Importance="high" />
<Message Text=" MSBuildStartupDirectory = $(MSBuildStartupDirectory)" Importance="high"/>
</Target>
<Target Name="ShowOtherProperties">
<Message Text=" " />
<Message Text=" " />
<Message Text=" Environment (SET) Variables* " />
<Message Text=" --------------------------- " />
<Message Text=" COMPUTERNAME = *$(COMPUTERNAME)* " />
<Message Text=" USERDNSDOMAIN = *$(USERDNSDOMAIN)* " />
<Message Text=" USERDOMAIN = *$(USERDOMAIN)* " />
<Message Text=" USERNAME = *$(USERNAME)* " />
</Target>
"외부 msbuild 파일"을 사용 중이고 파일 이름이나 경로를 전달해야하는 경우 (외부 msbuild 파일은 호출하는 .msbuild 파일과 동일한 디렉토리에 있지 않은 경우 상대 파일을 좋아하지 않기 때문입니다) .... 여기에 편리한 작업 (3.5 이상)이 있습니다.
<ConvertToAbsolutePath Paths="..\"> <!-- Some relative path here -->
<Output TaskParameter="AbsolutePaths" PropertyName="MyAbsolutionPathProperty"/>
</ConvertToAbsolutePath>
<Message Text="'MyAbsolutionPathProperty' = '$(MyAbsolutionPathProperty)'" />
MSBuild에는 MSBuildProjectDirectory
프로젝트 또는 스크립트 파일이있는 디렉터리의 절대 경로 인 이라는 속성이 예약되어 있습니다 ( 사용자의 경우 C : \ Dev). 따라서 "$(MSBuildProjectDirectory)\temp"
정확히 당신이 찾고있는 것입니다.
참고 URL : https://stackoverflow.com/questions/2111256/how-can-i-get-the-current-directory-in-an-msbuild-script
'UFO ET IT' 카테고리의 다른 글
파이썬 용 Vim에서 구문 강조 (0) | 2020.11.17 |
---|---|
UTF-8 (또는 최소한 독일어 움라우트)을 사용하는 Latex의 리스팅 (0) | 2020.11.16 |
최소한 HTTP 요청에 필요한 것은 무엇입니까? (0) | 2020.11.16 |
열 이름의 Excel 열 번호 (0) | 2020.11.16 |
맞춤 마커가있는 Android Maps API v2 (0) | 2020.11.16 |