Проект веб-развертывания / MSBuild - TempBuildDir - PullRequest
1 голос
/ 12 января 2011

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

Ответы [ 2 ]

4 голосов
/ 12 января 2011

В каталоге 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>

до

 <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, как и раньше.

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

1 голос
/ 09 февраля 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> 

...