Я пытаюсь перенести проект C# из .net framework v4.6 в стандарт .net. У проекта есть зависимость log4net v2.0.8.
Я нашел этот SO anwser, который рекомендует использовать стандарт .net 1.3 и дает ссылку на эта почта для получения более подробного решения.
Проблема возникает при настройке log4net с помощью метода XmlConfigurator.Configure, для которого в качестве первого аргумента требуется ILoggerRepository.
В сообщении используется метод LogManager.GetRepository(Assembly.GetEntryAssembly()), но Assembly.GetEntryAssembly() - это не поддерживается в стандарте .net 1.3.
Официальная документация также не работает, потому что сигнатура метода XmlConfigurator.Configure и его пример использования не совпадают.
Итак, как я могу настроить log4net в проекте .net standard 1.3?





В проекте библиотеки классов .NET Standard 1.3 укажите аргумент Assembly в сигнатуре метода, отвечающего за конфигурацию Log4net, например:
public static void Configure(Assembly assembly)
{
ILoggerRepository repository = LogManager.GetRepository(assembly);
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
// ...
}
Вызовите этот метод из своего фактического приложения, разрабатываемого либо в полной .NET Framework, либо в .NET Core, передав этот аргумент Assembly, например, через Assembly.GetEntryAssembly().
Assembly.GetEntryAssembly() поддерживается как в полной версии .NET Framework, так и в .NET Core.