2012-03-16 2 views
0

У меня есть проект под названием InversionOfControl. Этот проект имеет класс под названием IOC. Это выглядит так:Тип «InversionOfControl.IOC» существует как в «InversionOfControl.dll», так и «InversionOfControl.dll»

/// <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; } 
} 

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

Value cannot be null.
Parameter name: container

на нормальных решает:

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

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

The type 'InversionOfControl.IOC' exists in both 'InversionOfControl.dll' and 'InversionOfControl.dll'

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

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

ответ

1

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

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

+0

Оказывается, у меня есть два загруженных в моем модуле вида. Оба находятся в разделе «Временные файлы ASP.NET». Любая идея, как это могло случиться? – Vaccano

+0

Проверить версии - вы можете загрузить несколько сильно названных сборок (с разными версиями). Тот же вид показывает это где-то. –

Смежные вопросы