Проект веб-развертывания / MSBuild - TempBuildDir

При использовании Проект веб-развертывания MSBuild использует папку .TempBuildDir при выполнении сборки. Можно ли указать альтернативную папку?


person UpTheCreek    schedule 12.01.2011    source источник


Ответы (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, как и раньше.

Если вы установите обновление для пакета веб-развертывания, ваши изменения будут перезаписаны.

person Brian Walker    schedule 12.01.2011

Другое решение - раскомментировать и переопределить цель «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> 

person Vadim Tofan    schedule 09.02.2011