2011-07-08 4 views
25

У меня есть приложение wpf, в котором я пытаюсь ссылаться на библиотеку классов, которую я создал. Я добавил ссылку на .dll И я добавил оператор using в свой файл, и intellisense фактически видит новое пространство имен.Тип или пространство имен не найдено, когда ссылка существует

Тогда в моем коде я могу создавать новые объекты классов в моем добавленном .dll просто отлично. intellisense видит все методы ect..no проблемы, никаких ошибок.

Когда я пытаюсь создать приложение для wpf, все внезапное, что я получаю тип или пространство имен, не могут найти ошибку в моей добавленной dll.

Затем я получаю ошибки всякий раз, когда пытаюсь создать объекты из этой .dll.

Я не понимаю, что происходит. Почему это работает до того, как я построю, но когда я его создаю, он не знает, где это .dll, я ссылаюсь?

Также я перешел к той библиотеке классов, которую я пытаюсь добавить, и гарантирует, что она будет построена без ошибок.

+3

убедитесь, что ссылка на dll не соответствует структуре более высокого уровня, чем ваш проект. т.е. 3.5 ссылка на проект 4.0 dll –

ответ

60

Наиболее распространенной причиной этого является то, что ваш .DLL нацелен на полную платформу .NET Framework, но приложение WPF предназначено для профиля клиента.

Например, если ваша библиотека нацелена на .NET 3.5, убедитесь, что ваш WPF-приложение нацелен на полную среду .NET 3.5 или 4.0, а не на профиль клиента.

+6

Microsoft должна дать эту ссылку в качестве подсказки решения вместо общего сообщения об ошибке, которое не имеет никакого смысла. –

+0

Аналогичным образом, я получил эту ошибку при ссылке на проект .NET 4.5 из проекта .NET 4 – mao47

0

Вы можете скопировать любые DLL-файлы из другого проекта, двух файлов .dll. например: A.dll, A.pdb и переименуйте эти два файла в название вашего проекта.

Тогда вы можете перестроить этот проект.

+2

он уже включил файлы dll, но его сборка завершилась неудачно. ваш ответ не отвечает на этот вопрос. – pascalhein

5

Несколько мыслей по этому поводу, что вы можете попробовать:

  • Проверить, что нижняя версия не вызывая более высокую версию сборки (например, .NET 3.5 проекта не вызывая сборку .NET 4.0).

  • Clean -> Build (или Rebuild)

  • вручную удалить бен/OBJ папки как вызывающей и призывающих проектов. Это заставляет все строить - «жесткий» путь. Это может показаться излишним, но я работал пару раз.

  • Restart VS - иногда просто объяснений нет.

  • Перезагрузка - когда ничего не работает, дайте ей перерыв и повторите попытку.

+0

Спасибо, но этот вопрос почти три года и разрешен, поскольку я выбрал ответ, который был правильным исправлением. – twaldron

+1

Я просто оставляю это здесь, если это кому-то помогает :) – Joel

+1

@twaldron Пункт 1 в этом контрольном списке - это то, что исправлено для меня. знак равно –

0

Если вы получаете это без DLL - проверьте только файл кода, который он настроил для компиляции. В Visual Studio 2013 я продолжаю добавлять файлы кода, и он устанавливает действие сборки (находящееся в разделе «Дополнительно» свойств файла кода в «Содержимое», а не «Скомпилировать». Измените это.

0

Иногда явное обозначение сборки который содержит пространство имен.

xmlns:myns="clr-namespace:MyNamespace;assembly=MyAssembly" 

Я не знаю, почему это требуется.

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