На мой взгляд, лучшим решением было бы сделать файл встроенным ресурсом. Поскольку вы сказали, что файлы не меняются, нет смысла хранить их в виде файла на диске. Но, если вы собираетесь встраивать их, вы можете также преобразовать их в код, чтобы ваш код не тратил впустую циклы процессора при разборе и десериализации файла json.
Если некоторые из ваших компьюмеров пакетов будутиногда хочется изменить содержимое, тогда я думаю, что создание вашего пакета с расширяемым API было бы лучше, чем наличие файла конфигурации. Я не знаю, работали ли вы вообще с ASP.NET Core, но я думаю, что их конфигурация великолепна. Вся конфигурация - это код, использующий обратные вызовы. Например:
app.UseWhateverMiddleware(options => {
// options contains default values, my app can change the values I care about here
})
Это решает очень много проблем. Если ваш пакет перезаписывает файлы содержимого проекта, то потребители вашего пакета потеряют свои настройки. Если ваш пакет не перезаписывает файлы содержимого, то у вас нет хорошего способа обновить значения по умолчанию или добавить новые параметры в проекты, уже использующие ваш пакет. В зависимости от того, кто ваши клиенты, они могут не быть довольны вынужденной настройкой вашей библиотеки, хотя файл должен быть развернут вместе с их приложением. В частности, для веб-приложений некоторым людям нравятся файлы конфигурации, некоторые хранят конфигурацию в базе данных или переменные среды, все конфигурации в одном файле, разные файлы конфигурации для разных библиотек или разные файлы конфигурации для разных областей / функций приложения.
Используя шаблон опций ядра ASP.NET , он позволяет проектам настраиваться так, как хочет проект, а не так, как хочет пакет.