Публикация приложения на C#

Когда публикую приложение на C# в выходную директорию копируются все файлы, кроме например appsettings.json, созданный саморучно или любые другие директории, где лежат разные ресурсы для программы (картинки, звуки и т.д.) Чтобы, например, в выходную директорию копировался appsettings.json приходится в файле проекта прописывать следующее

<ItemGroup>
    <None Update="appsettings.json">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
</ItemGroup>

И то же самое для директорий Хотел бы узнать это нормальная практика или нужно как-то по другому?


Ответы (1 шт):

Автор решения: SmallSoft

Нормальная, потому что параметр CopyToOutputDirectory для этого и предназначен. Если подробнее, то в .NET SDK есть специальный механизм включения файлов в проект по умолчанию. Например, файлы с расширением .cs включаются как элемент Compile, благодаря чему они подаются на вход компилятора. Файлы с расширениями, которые не подпадают под этот набор известных расширений (в том числе и .json), включаются как элемент None, то есть на процесс сборки не влияют. Но у None есть свойство CopyToOutputDirectory, которое по умолчанию равно Never. Если установить его как в вашем коде, это укажет системе сборки, что файл нужно скопировать в выходной каталог, если он новее (по дате изменения) того файла, который там уже лежит.

→ Ссылка