Не удалось найти тип или пространство имен

В настоящее время я пытаюсь преобразовать проект настраиваемых действий WiX 3.5 в Visual Studio 2008 в WiX 3.7 и Visual Studio 2012, и я получаю следующее исключение:

Не удалось найти тип или имя пространства имен "MyNamespace" (отсутствует директива using или ссылка на сборку?)

На dll определенно ссылаются, и Visual Studio 2012 не видит проблем с пространством имен. Все в пространстве имен даже всплывает в Intellisense, но когда я его создаю, я получаю это исключение.

У кого-нибудь есть представление о том, что здесь происходит?

Дополнительная информация:

Пространство имен, на которое я ссылаюсь, - это библиотека.Net 2.0, а проект пользовательских действий - это проект.Net 2.0.

РЕДАКТИРОВАТЬ:

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

Первичная ссылка "MyNamespace, Version=8.5.1.20, Culture= нейтральная, PublicKeyToken=f593502af6ee46ae, processorArchitecture=MSIL" не может быть разрешена, поскольку она имеет косвенную зависимость от сборки.NET Framework "mscorlib, Version=4.0.0.0, Culture= нейтральный, PublicKeyToken=b77a5c561934e089", который имеет более высокую версию"4.0.0.0", чем версия"2.0.0.0"в текущей целевой структуре.

Почему он пытается использовать mscorelib 4.0, когда это проект 2.0?

3 ответа

Решение

Таким образом, оказалось, что dll, являющаяся ссылкой, хотя и была скомпилирована для платформы.Net 2.0, компилировалась с помощью компилятора 4.0. Переключение проекта на компилятор 3.5 решило проблему.

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

В нашем случае, когда указанная dll предназначалась для.Net 4.0, она имела свою собственную ссылку на.Net 4.5.2 dll. Ссылочная целевая платформа 4.0 привела нас к убеждению, что 4.5 или 4.5.1 были достаточны для обработки вещей, но это не так - ссылочный проект должен был быть 4.5.2 для обработки dll и всех его ссылок.

Это явно было ошибкой со стороны создателя DLL.

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