При использовании Проект веб-развертывания MSBuild использует папку .TempBuildDir при выполнении сборки. Можно ли указать альтернативную папку?
Проект веб-развертывания / MSBuild - TempBuildDir
Ответы (2)
В каталоге C: \ Program Files \ MSBuild \ Microsoft \ WebDeployment \ v9.0 или v10.0 находится файл Microsoft.WebDeployment.targets, в котором свойство TempBuildDir определено в цели _PrepareForBuild.
Поскольку они используют задачу CreateProperty для установки TempBuildDir, для него всегда устанавливается жестко заданное значение, даже если свойство уже существует. Это могло быть сделано для того, чтобы устранить проблему, связанную с тем, что кто-то использует свойство TempBuildDir для чего-то еще и испортил сборку.
Вам придется изменить файл Microsoft.WebDeployment.targets, чтобы использовать другой временный каталог.
ВНИМАНИЕ! Следующее - это изменение файла, который вы не контролируете, поэтому используйте его на свой страх и риск.
Если бы вы изменили следующие строки в цели _PrepareForBuild с
<CreateProperty Value=".\TempBuildDir\">
<Output TaskParameter="Value" PropertyName="TempBuildDir" />
</CreateProperty>
to
<CreateProperty Value="$(MySpecialWebTempBuildDir)" Condition=" '$(MySpecialWebTempBuildDir)' != '' ">
<Output TaskParameter="Value" PropertyName="TempBuildDir" />
</CreateProperty>
<CreateProperty Value=".\TempBuildDir\" Condition=" '$(MySpecialWebTempBuildDir)' == '' ">
<Output TaskParameter="Value" PropertyName="TempBuildDir" />
</CreateProperty>
Затем установите свойство MySpecialWebTempBuildDir в файле проекта, и оно должно переопределить его. Если вы не установите MySpecialWebTempBuildDir, он будет использовать TempBuildDir, как и раньше.
Если вы установите обновление для пакета веб-развертывания, ваши изменения будут перезаписаны.
Другое решение - раскомментировать и переопределить цель «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>