Есть ли способ остановить VS2008 Web Deployment Project от создания папки Source при использовании ExcludeFromBuild? - PullRequest
1 голос
/ 18 марта 2011

При исключении файлов в проекте веб-развертывания с использованием ExcludeFromBuild, например,

  <ItemGroup>
      <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.csproj*"/>
  </ItemGroup>

Я получаю папку Source, содержащую все рядом с папками Release и Debug. Эта папка не отображается, если я не использую параметр ExcludeFromBuild.

Есть ли способ остановить создание этой папки? Почему он создан в первую очередь?

1 Ответ

1 голос
/ 21 апреля 2011

В файле Misrosoft.WebDeployments.targets (который импортирует файл проекта веб-развертывания) есть цель _CopyBeforeBuild, которая копирует все исходные файлы, когда свойство ExcludeFromBuild не пустое или EnableCopyBeforeBuild указано:

...

<CopyBeforeBuildTargetPath>$(MSBuildProjectDirectory)\Source</CopyBeforeBuildTargetPath>

...

<Target Name="_CopyBeforeBuild" Condition=" '$(EnableCopyBeforeBuild)' == 'true' or '@(ExcludeFromBuild)' != ''  ">
    ...
    <RemoveDir Directories="$(CopyBeforeBuildTargetPath)"/>
    <MakeDir Directories="$(CopyBeforeBuildTargetPath)"/>
    <Copy SourceFiles="@(_WebFiles)" DestinationFolder="$(CopyBeforeBuildTargetPath)\%(_WebFiles.SubFolder)%(_WebFiles.RecursiveDir)" />
    ...
</Target>

скрипт создает исходный каталог и не удаляет его.Этот каталог меня тоже раздражает, поэтому я добавляю следующие строки в файл проекта веб-развертывания:

<Target Name="AfterBuild">
    <RemoveDir Directories="$(CopyBeforeBuildTargetPath)" />
</Target>
...