Почему PreApplicationStartMethod со ссылкой на пользовательскую библиотеку .NET вызывает сбой Log4Net без уведомления?

Фактическая проблема, которую я рассматриваю, может быть немного сложнее, чем предполагает название, но я еще не понял ее. Вот что у меня есть:

Контекст

У меня есть решение для многих проектов, но здесь только 3 значения: проект пользовательского интерфейса ASP.NET WebForms (проект A) и проект веб-службы (проект B).

      + Solution
└ Project A (Web GUI)
| └ log4net (v1.2.13))
| └ Library C (Common library)
|   └ log4net (v1.2.13))
└ Project B (Web Services, contains Swagger)
  └ log4net (v1.2.13))
  └ Library C (Common library)
    └ log4net (v1.2.13))

В Project A есть ссылка на Project B, потому что он использует некоторые части веб-службы, которые я не хочу реализовывать дважды. Оба также ссылаются на сборку C (той же версии), библиотеку, которая не является частью кода решения. Все они также ссылаются на одну и ту же версию библиотеки log4net.

Поскольку в проекте B также есть Swagger, в нем есть следующие файл:

      [assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]

namespace Web.Services.External {
    public class SwaggerConfig {
        public static void Register() {
            // LINE OF TROUBLE
            string rootUrl = ConfigurationManager.AppSettings.TryGetStringValue("SwaggerRootUrl"); 
            if (!string.IsNullOrWhiteSpace(rootUrl)) {
                GlobalConfiguration.Configuration
                    .EnableSwagger(c => {
                    //.......

Теперь все это отлично работает для чванства и веб-сервисов, но как только активируется «ЛИНИЯ ПРОБЛЕМЫ», Log4Net в Project A (!) Молча терпит неудачу.

В этой строке используется настраиваемый метод, который находится в самописной сборке .NET "C", на которую указывает ссылка, и в основном выполняет то же, что и метод, с возможностью иметь значения по умолчанию.

Как только я использую , вход в проект A не выполняется. При использовании встроенного , лесозаготовительные работы.

Вопрос

Я подозреваю, что проблема заключается в загрузке указанной сборки "C", но почему именно?

Почему Log4Net тихо терпит неудачу в проекте "A" при использовании в другом проекте «B», на который имеется ссылка, в котором есть ссылка на настраиваемую библиотеку .NET «C»?

Примечания

  • Проблема исчезает, когда я заменяю СТРОКУ ПРОБЛЕМЫ просто предполагая, что загрузка справочной библиотеки C проблематична.

0 ответов

Другие вопросы по тегам