Web Deployment Project을 사용하는 경우 MSBuild는 빌드를 수행 할 때 '.TempBuildDir'폴더를 사용합니다. 다른 폴더를 지정할 수 있습니까?웹 배포 프로젝트/MSBuild - TempBuildDir
1
A
답변
4
C : \ Program Files \ MSBuild \ Microsoft \ WebDeployment \ v9.0 또는 v10.0 디렉터리는 TempBuildDir 속성이 _PrepareForBuild 대상에 정의 된 Microsoft.WebDeployment.targets 파일입니다.
CreateProperty 작업을 사용하여 TempBuildDir을 설정하므로 속성이 이미 존재하더라도 항상 하드 코딩 된 값으로 설정됩니다. 이것은 다른 누군가를 위해 TempBuildDir 속성을 사용하고 빌드를 엉망으로 만드는 누군가의 문제를 제거하는 것일 수 있습니다.
다른 임시 디렉터리를 사용하려면 Microsoft.WebDeployment.targets 파일을 변경해야합니다.
경고 : 다음은 사용자가 제어 할 수없는 파일을 변경하기 때문에 위험은 사용자 자신의 책임입니다. 당신이
<CreateProperty Value="$(MySpecialWebTempBuildDir)" Condition=" '$(MySpecialWebTempBuildDir)' != '' ">
<Output TaskParameter="Value" PropertyName="TempBuildDir" />
</CreateProperty>
<CreateProperty Value=".\TempBuildDir\" Condition=" '$(MySpecialWebTempBuildDir)' == '' ">
<Output TaskParameter="Value" PropertyName="TempBuildDir" />
</CreateProperty>
에
<CreateProperty Value=".\TempBuildDir\">
<Output TaskParameter="Value" PropertyName="TempBuildDir" />
</CreateProperty>
에서 _PrepareForBuild 대상에 다음 줄을 변경한다면
그런 다음 프로젝트 파일에 MySpecialWebTempBuildDir 속성을 설정하고 그것을 오버라이드 (override) 할 필요가 있습니다. MySpecialWebTempBuildDir을 설정하지 않으면 이전과 마찬가지로 TempBuildDir을 사용합니다.
웹 배포 패키지에 대한 업데이트를 설치하면 변경 사항을 덮어 씁니다. 다음과 같이
1
또 다른 해결책은 주석을 해제하고 웹 배포 프로젝트의 "BeforeBuild"대상을 무시하는 것입니다
<Target Name="BeforeBuild">
<CreateProperty Value=".\TempBuildDirDebug\" Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<Output TaskParameter="Value" PropertyName="TempBuildDir" />
</CreateProperty>
<CreateProperty Value=".\TempBuildDirRelease\" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Output TaskParameter="Value" PropertyName="TempBuildDir" />
</CreateProperty>