Библиотека предприятия: процесс не может получить доступ к файлу, поскольку он используется другим процессом

#c# #logging

#c# #ведение журнала

Вопрос:

У меня есть 10 консолей .net, запускающихся одновременно в одной папке. Все 10 процессов запускаются путем записи информации о запуске (через EnterpriseLibrary) в 10 разных файлах журнала. Библиотеки DLL EnterpriseLibrary выпускаются рядом с консольным файлом .exe

Иногда я получаю это исключение, когда вызываю Write. Проблема в том, что .net не может загрузить ссылку на EnterpriseLibrary. Я не уверен, как с этим справиться?

Система.Исключение TypeInitializationException: Инициализатор типа для ‘Microsoft.Практика.EnterpriseLibrary.Обычный.Конфигурация.ObjectBuilder.EnterpriseLibraryFactory’ выдал исключение. —> System.IO.FileLoadException: не удалось загрузить файл или сборку ‘Microsoft.Практика.ObjectBuilder, версия = 1.0.51205.0, Culture = нейтральный, PublicKeyToken =null’ или одна из его зависимостей. Процесс не может получить доступ к файлу, поскольку он используется другим процессом. (Исключение из HRESULT: 0x80070020) Имя файла: ‘Microsoft.Практика.ObjectBuilder, версия = 1.0.51205.0, Culture = нейтральный, PublicKeyToken =null’ в Microsoft.Практика.EnterpriseLibrary.Обычный.Конфигурация.ObjectBuilder.EnterpriseLibraryFactory..cctor()

WRN: ведение журнала привязки сборки отключено. Чтобы включить ведение журнала сбоев привязки сборки, установите значение реестра [HKLM Software Microsoft Fusion!Включить LOG] (DWORD) равным 1. Примечание: Существует некоторое снижение производительности, связанное с протоколированием сбоя привязки сборки. Чтобы отключить эту функцию, удалите значение реестра [HKLM Software Microsoft Fusion!Включить журнал].

— Завершение трассировки стека внутренних исключений — в Microsoft.Практика.EnterpriseLibrary.Обычный.Конфигурация.ObjectBuilder.EnterpriseLibraryFactory.Создание[T](IConfigurationSource configurationSource) в Microsoft.Практика.EnterpriseLibrary.Ведение журнала.LogWriterFactory.Create() в Microsoft.Практика.EnterpriseLibrary.Ведение журнала.Logger.get_Writer() в Microsoft.Практика.EnterpriseLibrary.Ведение журнала.Регистратор.Запись (LogEntry log)

Комментарии:

1. почему бы вам не разделить файлы журналов для этих приложений??

2. Проблема не в этом. Все они записывают в разные файлы журнала, но используют одну и ту же библиотеку