Получение “типа или имени пространства имен не могло быть найдено”, но все кажется хорошо?

В ваших .h файлах добавьте предварительные объявления для других классов. Когда у вас есть заголовки, включающие друг друга, один фактически не получит включение, иначе они расширились бы, чтобы включать друг друга бесконечно.

Таким образом, в one.h вы получите:

#pragma once

class two;  // removed include, added forward declaration

class one
{
private:
    two* t;
public:
    one();
};

Затем на самом деле выполните включение в one.cpp, где вам нужно полное определение двух

#include "one.h"
#include "two.h" // added this include
one::one()
{ t = new two(this);}
258
задан d219 22 June 2019 в 03:11
поделиться

4 ответа

Это может быть результатом несовместимости версий .NET Framework между двумя проектами.

Это может произойти двумя способами:

  1. проект профиля клиента ссылается на проект полной структуры; или
  2. более старая версия платформы, нацеленная на новую версию платформы

Например, это произойдет, когда приложение настроено для целевой платформы клиентского профиля .Net 4, а проект, на который он ссылается, нацелен на полную структуру .Net 4.

Чтобы прояснить это:

  • Проект A нацелен на структуру профиля клиента
  • Проект A ссылается на проект B
  • Проект B нацелен на полную структуру

Решение в этом случае - либо обновить структуру target приложения (Project A) или понизить целевую версию ссылочной сборки (Project B). Это нормально, если приложение полной платформы ссылается на сборку платформы профиля клиента или использует ее, но не наоборот (профиль клиента не может ссылаться на целевую сборку полной платформы).

Обратите внимание, что вы также можете получить эту ошибку, когда создаете новый проект в VS2012 или VS2013 (который использует .Net 4.5 в качестве структуры по умолчанию) и:

  • ссылающиеся проекты используют .Net 4.0 (это часто встречается, когда вы переходите с VS2010 на VS2012 или VS2013, а затем добавляете новый проект)

  • указанные проекты используют более высокую версию, то есть 4.5.1 или 4.5.3 (вы перенастроили существующие проекты на последнюю версию версия, но VS по-прежнему создает новые проекты, ориентированные на v4.5, а затем вы ссылаетесь на эти старые проекты из нового проекта)

453
ответ дан 23 November 2019 в 02:41
поделиться

Хорошо, спустя годы, используя VS 2017 .NET Core 2.2 Razor Pages, я чувствую, что этот ответ может кому-то помочь. Если бы это была змея, она бы меня укусила. Я разбрасывал вещи, менял имена, переименовывал модели, и вдруг я получил эту ошибку:

Ошибка CS0246 Не удалось найти тип или имя пространства имен «UploadFileModel» (вы пропустили используя директиву или ссылку на сборку?)

Это было подчеркнуто красным на моей странице .chstml Razor. (не подчеркнуто после исправления):

@page
@model UploadFileModel

Итак, наконец, и к счастью, я нашел код от кого-то еще, что я первоначально использовал, и вот, пространство имен не включает файл .cshtml. name !!!

Вот моя плохая фиктивная ошибка, отшлёпавшая меня именем страницы в пространстве имен:

namespace OESAC.Pages.UploadFile
{
    public class UploadFileModel : PageModel
    {

То, что было в моем исходном коде, и все, что мне нужно было сделать, это удалить страницу имя из пространства имен, UploadFile:

namespace OESAC.Pages
{
    public class UploadFileModel : PageModel
    {

И вот, все ошибки исчезли! Дурак я. Но вы знаете, MS сделал этот .NET C # MVC действительно запутанным для нас, не компьютерщиков. Я постоянно спотыкаюсь о своих шнурках, пытаясь выяснить названия моделей, названия страниц и синтаксис, чтобы их использовать. Это не должно быть так сложно. Ну что ж. Я надеюсь, что ошибка и решение поможет кому-то. Ошибка была правильной, нет пространства имен с именем «UploadFileModel», ха-ха.

0
ответ дан 23 November 2019 в 02:41
поделиться

Вы также можете попробовать удалить код, который, по вашему мнению, у вас вызывает проблемы, и посмотреть, компилируется ли он без ссылок на этот код. Если нет, исправляйте вещи, пока он снова не скомпилируется, а затем верните код предполагаемой проблемы. Иногда я получаю странные ошибки в отношении классов или методов, которые, как я знаю, верны, когда компилятору что-то не нравится. Как только я исправляю то, на чем он действительно зацикливается, эти «фантомные» ошибки исчезают.

1
ответ дан 23 November 2019 в 02:41
поделиться

Сначала я хотел бы убедиться, что информация вашего проекта не повреждена. Очистите и восстановите свое решение.

Если это не помогает, то в прошлом я видел одну вещь, которую я видел в прошлом для решения проблем с дизайнером, - это открытие проекта форм Windows, а затем его повторное закрытие. Это немного похоже на куриные внутренности, так что не задерживайте дыхание.

7
ответ дан 23 November 2019 в 02:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: