Не удалось найти имя типа или пространства имен [дубликат]
этот вопрос уже есть ответ здесь:
у меня есть C# решение с несколькими проектами в Visual Studio 2010.
Один из них-тестовый проект (я назову его" PrjTest"), другой (Я назовем это" PrjForm"). Существует также третий проект, на который ссылается PrjForm, который он может ссылаться и успешно использовать.
PrjForm ссылки PrjTest и PrjForm присвоен класс using о себе:
using PrjTest;
- ссылка была правильно добавил
usingзаявление правильно на месте- орфографических ошибок
- PrjTest строит успешно
- PrjForm почти строит, но ломается на
using PrjTest;строка с ошибкой:
не удалось найти имя типа или пространства имен "PrjTest" (отсутствует директива using или ссылка на сборку?)
Я пробовал следующее, чтобы решить эту проблему:
- удален Resharper (поскольку Resharper не имел проблем с распознаванием ссылочного проекта, я подумал, что это может стоить выстрела)
- удалена и повторно добавлена ссылка и оператор using
- воссозданный PrjForm с нуля
- PrjForm в настоящее время находится внутри папки PrjTest, я попытался переместить ее во внешнюю папку
- загрузил решение на другой компьютер с новой копией
VS 2010
Я сделал свою домашнюю работу и потратил слишком много времени на поиск ответа в интернете, ни одно из решений пока не помогло.
что еще можно попробовать?
16 ответов:
посмотреть этот вопрос.
оказывается, это была проблема профилирования клиента.
PrjForm был установлен в " профиль клиента .Net Framework 4" Я изменил его на ".Net Framework 4", и теперь у меня есть успешная сборка.
спасибо всем! Я предполагаю, что после всего этого времени, проведенного в Интернете, я нахожу решение через несколько минут после публикации, я думаю, что трюк-это знать правильный вопрос..
в моем случае у меня было:
ссылка на DLL:
:.NET 4.5.NET 4.0из-за вышеуказанного несоответствия проект 4.0 не мог видеть внутри пространства имен 4.5 .файл DLL. Я перекомпилировал .DLL для целевой .NET 4.0, и я был в порядке.
PrjForm был установлен в " .Net Framework 4 Client Profile "я изменил его на" .Net Framework 4", и теперь у меня есть успешная сборка.
это сработало и для меня тоже. Большое спасибо. Я пытался пример RDF для dotNet, где в Я загрузил комплект из dotnetrdf.
профиль клиента NET4: Всегда устанавливайте целевой профиль клиента NET4 для всех клиентских настольных приложений (включая приложения Windows Forms и WPF).
NET4 полная структура: Цель net4 в полном объеме только если компоненты или сборки, необходимые вашему приложению, не включены в профиль клиента. Это включает в себя: Если вы создаете серверные приложения, такие как:
- ASP.Net приложения
- серверные веб-службы на основе ASMX
при использовании устаревших клиентских сценариев, таких как: система использования.Данные.Оракул.dll, которая устарела в NET4 и не включена в профиль клиента.
- использование старых версий Windows Рабочий процесс Foundation 3.0 или 3.5 (WF3.0 , WF3.5)
Если вы ориентируетесь на сценарии разработчика и вам нужен инструмент, такой как MSBuild, или вам нужен доступ к конструкторским сборкам, таким как System.Дизайн.dll
еще одна вещь, которая может вызвать эту ошибку, - это пакеты NuGet, построенные с более новой версией. NET.
изначальная ошибка:
frmTestPlanSelector.cs(11,7): error CS0246: The type or namespace name 'DatabaseManager' could not be found (are you missing a using directive or an assembly reference?)далее в журнале я нашел это:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3275: The primary reference "[redacted]\DatabaseManager\bin\Release\DatabaseManager.dll" could not be resolved because it has an indirect dependency on the assembly "System.Data.SQLite, Version=1.0.94.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" which was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0".решение состояло в том, чтобы переустановить пакеты NuGet:
также возможно, что указанные проекты нацелены на .NET 4.0, а проект консольного приложения-на клиентскую библиотеку .NET 4.0.
хотя это, возможно, не было связано с этим конкретным случаем, я думаю, что кто-то еще может найти эту информацию полезной.
Я столкнулся с этой проблемой оказалось.
проект B ссылается на проект A.
проект A скомпилирован как A.dll (имя сборки = A).
Проект Б составлен по состоянию A.dll (название сборки).
Visual Studio 2010 не поймал это. Решарпер был в порядке, но не компилировался. Дизайнер WinForms дал вводящее в заблуждение сообщение об ошибке, которое, вероятно, связано с некомпетентными целями платформы.
решение, после болезненного дня, было чтобы убедиться, что сборки не имеют одинаковое имя.
оператор using относится к пространство имен, а не проект.
убедитесь, что у вас есть соответствующее пространство имен в ссылки проекта:
namespace PrjTest { public class Foo { // etc... } }подробнее о пространствах имен на MSDN:
У меня была та же проблема. Целевые рамки были прекрасны для меня. И все же это не сработало. Я установил VS2010 с пакетом обновления 1, и сделали "восстановить" на PrjTest. Затем он начал работать на меня.
для ссылок COM / ActiveX VS 2012 покажет эту ошибку прямо при использовании оператора. Что довольно забавно, так как это говорит, что, возможно, Вам не хватает оператора using.
чтобы решить эту проблему: зарегистрируйте фактическую библиотеку dll COM / ActiveX, даже если она находится в соседнем проекте, и добавьте ссылку через канал COM, а не канал проекта. Это добавит взаимодействие.ProjectName вместо ProjectName в качестве ссылки, и это решает эту странную ошибку.
Если ваш проект (PrjTest) не предоставляет никаких открытых типов в
PrjTestпространство имен, это вызовет эту ошибку.включает ли проект (PrjTest) какие-либо классы или типы в пространстве имен "PrjTest", которые являются общедоступными?
другая проблема, которая может быть причиной такого поведения являются конфигурации сборки.
у меня было два проекта с конфигурациями, установленными для сборки в определенные папки. Как
DebugиAny CPUи в секунду он былDebugиx86.то, что я сделал, я пошел к
Solution->Context menu->Properties->Configuration properties->Configurationи я установил все мои проекты, чтобы использовать те же конфигурацииDebugиx86, а такжеBuildметки.затем проекты начали правильно строить и смогли увидеть пространство имен.

Comments