Добавление к встроенной группе элементов ExcludeFromBuild ItemGroup с проектом веб-развертывания

Я добавил проект веб-развертывания в мое решение для создания чистого развертывания моего веб-приложения. Это работает в основном как ожидалось... т.е. Создает источник, а затем копирует файлы, которые будут развернуты в папку /Release (и исключает такие вещи, как исходные файлы и папки .svn и т.д.).

Но теперь я хочу явно исключить некоторые другие файлы (для простоты просто скажем один файл с именем somefile.txt). Итак, я добавляю группу элементов в файл wdproj следующим образом:

<ItemGroup>
    <ExcludeFromBuild Include="somefile.txt" />
</ItemGroup>

Это действительно исключает конкретный файл в соответствии с запросом, но теперь файлы, исключенные по умолчанию, больше не исключаются. В частности, теперь все мои svn файлы находятся в папке Release, а также исходная папка на том же уровне со всем источником в ней.

В принципе, кажется, что определение группы элементов ExcludeFromBuild перезаписывает набор встроенных значений по умолчанию, а не добавляет к ним.

Не точно шоу-стоппер, но не идеальный... Итак, кто-нибудь знает, как просто добавить файл в группу ExcludeFromBuild по умолчанию? Или это случай использования значений по умолчанию Vs. исключая все вручную Vs. удаление файлов, которые вы не выполнили после сборки по умолчанию?

Ответ 1

Хорошо для всех, кто приходит, я подумал, что должен ответить на свой вопрос... Я не нашел точного решения, которое я искал, поэтому я просто добавил все, что мне нужно было исключить вручную, в ExcludeFromBuild ItemGroup (чтобы имитировать что, по-видимому, выполнялось по умолчанию, а затем также исключает мой конкретный файл). Мой список ExcludeFromBuild закончился следующим образом:

<ItemGroup>
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\somefile.txt" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\obj\**\*.*" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\.svn\**\*.*" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\.svn\**\*" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.csproj" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.scc" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.user" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.vspscc" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.log" />
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.svclog" />
</ItemGroup>

В основном исключает все файлы журналов, файлы пользователей/проектов, svn файлы, исходные безопасные файлы и т.д., а также пользовательские файлы, которые я хотел игнорировать в первую очередь.

Ответ 2

Я не уверен, что это помогает, но команда имеет свойство Exclude, вы можете переопределить цель, которая копирует файлы, и использовать для включения/исключения того, что вам нужно.

Ответ 3

Да, я знаю, что это вечно старое, но вы пробовали это?

<ItemGroup>
    <ExcludeFromBuild Include="somefile.txt;$(ExcludeFromBuild)" />
</ItemGroup>