Исключение файла ядра csproj Visual Studio 2017

Я перенесла основные проекты xproj на csproj. Все работает хорошо, однако у меня все еще есть проблемы с публикацией конфигурации. На основе документации: https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json-to-csproj Я должен иметь возможность исключать файлы во время публикации.

Я добавил следующие строки в f

<None Include="*.json" CopyToPublishDirectory="Never" />
<None Include="wwwroot\**\*.map;wwwroot\**\*.less;*.pdb" CopyToPublishDirectory="Never" />
<None Include="wwwroot\**\*" CopyToPublishDirectory="PreserveNewest" />

Но файлы *.map, .json и .less копируются для публикации папки. Я попробовал другой порядок, не повезло.

Как исключить из публикации определенные файлы?

Ответ 1

Короткий ответ: вместо этого используйте следующие фрагменты:

<ItemGroup>
  <Content Update="**\*.map;**\*.less;*.json" CopyToPublishDirectory="Never" />
</ItemGroup>

Вы также можете добавить эти шаблоны в свойство "DefaultItemExcludes".

<PropertyGroup>
  <DefaultItemExcludes>$(DefaultItemExcludes);**\*.map;**\*.less;*.json</DefaultItemExcludes>
</PropertyGroup>

Более длинный ответ:

Microsoft.NET.Sdk и Microsoft.NET.Sdk.Web включают параметры для элементов по умолчанию. Это глобусы для элементов в папке проекта, которые всегда должны быть скомпилированы, встроены, скопированы для вывода и т.д. Есть некоторые настройки для управления этим, но они плохо документированы.

Если вы хотите изменить значение метаданных (например, параметр CopyToPublishDirectory) для элемента, уже включенного по умолчанию, glob, вы должны используйте "Обновить" вместо "Включить".

Чтобы увидеть, что происходит под капотом, вот настройки элемента по умолчанию для Microsoft.NET.Sdk и Microsoft.NET.Sdk.Web

https://github.com/dotnet/sdk/blob/dev15.1.x/src/Tasks/Microsoft.NET.Build.Tasks/build/Microsoft.NET.Sdk.DefaultItems.props#L19-L27

https://github.com/aspnet/websdk/blob/rel/vs2017rtw/src/Web/Microsoft.NET.Sdk.Web.ProjectSystem.Targets/netstandard1.0/Microsoft.NET.Sdk.Web.ProjectSystem.props#L25-L40