Выполнение сценариев ps1 и преобразования XDT - это функции, которые работают только с packages.config, , но не PackageReference. Проекты .NET Core (и я думаю, .NET Standard) работают только с проектами в стиле SDK, а проекты в стиле SDK поддерживают только PackageReference. Packages.config работает только с проектами «старого стиля», которые также могут быть PackageReference.
Библиотеки Microsoft ASP.NET Core устраняют эту разницу в том, что они больше не считывают настройки непосредственно из web.config. Вместо этого программа должна зарегистрировать функции обратного вызова, которые изменят существующий объект параметров в памяти. Например
services.AddMyService(options =>
{
options.setting = newValue;
});
Это дает вашим пользователям ряд преимуществ.
- Они больше не ограничиваются хранением значения конфигурации в том месте, которое потребовал автор библиотеки. Они могут выбрать загрузку конфигурации из базы данных, службы конфигурации, файла xml, файла json или просто жестко запрограммировать ее в приложении. Но это позволяет каждому разработчику выбрать то, что лучше всего подходит для его собственной системы.
- Если пользователь переопределяет параметр, который пакет помещает в файл конфигурации, и каждое обновление пакета отменяет предпочтение пользователя, пользователя раздражает, что пакет не соблюдает их решение изменить значение по умолчанию.
- Если пользователь не хочет переопределять параметр, который пакет поместил в файл конфигурации, а автор пакета не хочет перезаписывать файл конфигурации при каждом обновлении, то автору пакета очень сложно изменить значение по умолчанию.
Новая модель ASP.NET Core лучше для всех, потому что автор пакета создает объект параметров и предварительно заполняет его значениями по умолчанию, а затем вызывает метод делегата пользователя, позволяющий им изменять параметры, которые им важны. Если автор пакета хочет изменить значение по умолчанию, он делает это в своем собственном коде, публикует новый пакет, и пользователи, которые не меняют значение, получают новое значение по умолчанию, а пользователи, которые явно установили значение в своем коде, продолжают использовать значение, которое они хотят, из любого хранилища конфигурации, которое они хотят.
Итак, ответ TL: DR заключается в том, что вы не можете делать то, что просили, с проектами PackageReference, но я надеюсь, что мой более длинный ответ дал вам идеи, как вы можете переделать свою библиотеку, которая дает лучше как автору пакета, так и пользователю пакета опыт.
person
zivkan
schedule
07.12.2018