Тип "InversionOfControl.IOC" существует как в "InversionOfControl.dll", так и "InversionOfControl.dll",

У меня есть проект под названием InversionOfControl. Этот проект имеет класс под названием IOC. Это выглядит так:

/// <summary>
/// This class is used to expose the unity container to the application.
/// </summary>
public class IOC
{
 /// <summary>
 /// The actual unity container for the app.
 /// </summary>
 public static IUnityContainer Container { get; set; }
}

Все мои проекты, которые нужно разрешить единственные инъекции, имеют ссылку на этот класс. В последнее время я начал получать эту ошибку:

Значение не может быть нулевым. Имя параметра: контейнер

в нормальном разрешении:

ITransmitModel transmitModel = IOC.Container.Resolve<itransmitmodel>();
</itransmitmodel>

Когда я пытаюсь проверить IOC.Container, значение в окне просмотра:

Тип "InversionOfControl.IOC" существует как в "InversionOfControl.dll", так и "InversionOfControl.dll"

Я посмотрел в свою выходную папку и есть только один файл InversionOfControl.dll. (Я даже очистил свое решение и дважды проверил, что папка пуста. Затем я перестроил и снова проверил, что есть только один.)

Почему он думает, что есть две DLL, называемые InversionOfControl.dll?

1 ответ

Способ проверки того, какой модуль загружен во время выполнения, - "Debug- > Windows- > Modules" и проверить, откуда загружается DLL. Убедитесь, что вы не загружаете 2 сборки с разными версиями.

В качестве следующего шага я бы выполнил поиск всех файлов с этим именем, чтобы увидеть, есть ли подозрительные копии ( "cd/d c:\и dir/s/b InversionOfControl.dll" ).

licensed under cc by-sa 3.0 with attribution.