Я столкнулся со следующей проблемой:
Я поддерживаю решение, содержащее несколько исполняемых проектов.
Решение использует централизованное управление пакетами.
Я публикую все проекты в одной папке, чтобы избежать дублирования всех задействованных DLL. До сих пор это работало отлично.
На данный момент все проекты использовали один и тот же приемник — файловый приемник. Теперь один проект также использует консольный приемник, и это, похоже, проблема.
Если я запущу один из проектов, имеющий только файловый приемник, я получу следующее исключение:
Unhandled exception. System.IO.FileNotFoundException: Could not load file or assembly 'Serilog.Sinks.Console, Version=5.0.1.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10'. The system can not find the specified file.
File name: 'Serilog.Sinks.Console, Version=5.0.1.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10'
at System.Reflection.RuntimeAssembly.InternalLoad(AssemblyName assemblyName, StackCrawlMark& stackMark, AssemblyLoadContext assemblyLoadContext, RuntimeAssembly requestingAssembly, Boolean throwOnFileNotFound)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
at Serilog.Settings.Configuration.ConfigurationReader.LoadConfigurationAssemblies(IConfiguration section, AssemblyFinder assemblyFinder)
at Serilog.Settings.Configuration.ConfigurationReader..ctor(IConfiguration configSection, AssemblyFinder assemblyFinder, ConfigurationReaderOptions readerOptions, IConfiguration configuration)
at Serilog.ConfigurationLoggerConfigurationExtensions.GetConfigurationReader(IConfiguration configuration, ConfigurationReaderOptions readerOptions, DependencyContext dependencyContext)
at Serilog.ConfigurationLoggerConfigurationExtensions.Configuration(LoggerSettingsConfiguration settingConfiguration, IConfiguration configuration, ConfigurationReaderOptions readerOptions)
Неудавшийся проект не имеет ссылки на приемник консоли (и такой приемник не настроен), но, поскольку все копируется в один и тот же каталог, Serilog.Sinks.Console.dll доступен.
Если я удалю Serilog.Sinks.Console.dll или добавлю ссылку на него для связанного проекта, все будет работать. Так это происходит только в том случае, если проект никак не ссылается на приемник, но dll все еще доступен в папке приложения.
Что может быть причиной этого?
Мне кажется странным, что Serilog пытается загрузить сборки, не необходимые для предоставленной конфигурации логгера?
Мой раздел конфигурации выглядит следующим образом (json):
"Serilog": {
"Using": [
"Serilog.Sinks.File"
],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "MyApp.log"
}
}
],
"Enrich": [
"FromLogContext"
]
И я применяю загруженную конфигурацию следующим образом:
public static ILoggerFactory ConfigureLogging(IConfigurationRoot configuration)
{
// configure Serilog
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.Enrich.WithProperty("Application", System.Reflection.Assembly.GetEntryAssembly()?.Name() ?? "MyApp")
.CreateLogger();
// register with Microsoft.Extensions.Logging
var loggerFactory = new LoggerFactory();
loggerFactory.AddProvider(new SerilogLoggerProvider());
//...
}
Подробнее здесь: https://stackoverflow.com/questions/777 ... ailable-in
Serilog не удается загрузить dll Sink, не указанную в проекте, но доступную в папке приложения. ⇐ C#
Место общения программистов C#
1772522767
Anonymous
Я столкнулся со следующей проблемой:
Я поддерживаю решение, содержащее несколько исполняемых проектов.
Решение использует централизованное управление пакетами.
Я публикую все проекты в одной папке, чтобы избежать дублирования всех задействованных DLL. До сих пор это работало отлично.
На данный момент все проекты использовали один и тот же приемник — файловый приемник. Теперь один проект также использует консольный приемник, и это, похоже, проблема.
Если я запущу один из проектов, имеющий только файловый приемник, я получу следующее исключение:
Unhandled exception. System.IO.FileNotFoundException: Could not load file or assembly 'Serilog.Sinks.Console, Version=5.0.1.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10'. The system can not find the specified file.
File name: 'Serilog.Sinks.Console, Version=5.0.1.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10'
at System.Reflection.RuntimeAssembly.InternalLoad(AssemblyName assemblyName, StackCrawlMark& stackMark, AssemblyLoadContext assemblyLoadContext, RuntimeAssembly requestingAssembly, Boolean throwOnFileNotFound)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
at Serilog.Settings.Configuration.ConfigurationReader.LoadConfigurationAssemblies(IConfiguration section, AssemblyFinder assemblyFinder)
at Serilog.Settings.Configuration.ConfigurationReader..ctor(IConfiguration configSection, AssemblyFinder assemblyFinder, ConfigurationReaderOptions readerOptions, IConfiguration configuration)
at Serilog.ConfigurationLoggerConfigurationExtensions.GetConfigurationReader(IConfiguration configuration, ConfigurationReaderOptions readerOptions, DependencyContext dependencyContext)
at Serilog.ConfigurationLoggerConfigurationExtensions.Configuration(LoggerSettingsConfiguration settingConfiguration, IConfiguration configuration, ConfigurationReaderOptions readerOptions)
Неудавшийся проект не имеет ссылки на приемник консоли (и такой приемник не настроен), но, поскольку все копируется в один и тот же каталог, Serilog.Sinks.Console.dll доступен.
Если я удалю Serilog.Sinks.Console.dll или добавлю ссылку на него для связанного проекта, все будет работать. [b]Так это происходит только в том случае, если проект никак не ссылается на приемник, но dll все еще доступен в папке приложения.[/b]
Что может быть причиной этого?
Мне кажется странным, что Serilog пытается загрузить сборки, не необходимые для предоставленной конфигурации логгера?
Мой раздел конфигурации выглядит следующим образом (json):
"Serilog": {
"Using": [
"Serilog.Sinks.File"
],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "MyApp.log"
}
}
],
"Enrich": [
"FromLogContext"
]
И я применяю загруженную конфигурацию следующим образом:
public static ILoggerFactory ConfigureLogging(IConfigurationRoot configuration)
{
// configure Serilog
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.Enrich.WithProperty("Application", System.Reflection.Assembly.GetEntryAssembly()?.Name() ?? "MyApp")
.CreateLogger();
// register with Microsoft.Extensions.Logging
var loggerFactory = new LoggerFactory();
loggerFactory.AddProvider(new SerilogLoggerProvider());
//...
}
Подробнее здесь: [url]https://stackoverflow.com/questions/77759166/serilog-fails-to-load-sinks-dll-not-referenced-in-the-project-but-available-in[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия