Публикация приложения на C#
Когда публикую приложение на C# в выходную директорию копируются все файлы, кроме например appsettings.json, созданный саморучно или любые другие директории, где лежат разные ресурсы для программы (картинки, звуки и т.д.) Чтобы, например, в выходную директорию копировался appsettings.json приходится в файле проекта прописывать следующее
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
И то же самое для директорий Хотел бы узнать это нормальная практика или нужно как-то по другому?
Ответы (1 шт):
Нормальная, потому что параметр CopyToOutputDirectory для этого и предназначен. Если подробнее, то в .NET SDK есть специальный механизм включения файлов в проект по умолчанию. Например, файлы с расширением .cs включаются как элемент Compile, благодаря чему они подаются на вход компилятора. Файлы с расширениями, которые не подпадают под этот набор известных расширений (в том числе и .json), включаются как элемент None, то есть на процесс сборки не влияют. Но у None есть свойство CopyToOutputDirectory, которое по умолчанию равно Never. Если установить его как в вашем коде, это укажет системе сборки, что файл нужно скопировать в выходной каталог, если он новее (по дате изменения) того файла, который там уже лежит.