Не удалось найти тип или пространство имен IAppBuilder (отсутствует с помощью директивы pr для сборки) - программирование
Подтвердить что ты не робот

Не удалось найти тип или пространство имен IAppBuilder (отсутствует с помощью директивы pr для сборки)

Я работаю над приложением Asp.Net MVC 4, в котором я использую SignalR 2.0.1, и я его сопоставил с использованием класса запуска Owin, и он работал нормально сначала.

Внезапно, когда я попытался перестроить мое приложение, он сказал, что тип namespace IAppbuilder не найден.

Ниже приведен мой класс запуска

using Microsoft.Owin;
using Owin;
using WhiteBoardApp;

namespace WhiteBoardApp
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}

Я также установил пакет Owin, и по некоторым причинам я не смог найти класс запуска Owin, поэтому я просто добавил нормальный класс и включил все необходимые ссылки. Могу ли я узнать, где я ошибаюсь.

4b9b3361

Ответ 1

Попробуйте использовать консоль управления пакетами и выполните

Update-Package Owin -Reinstall

Ответ 2

У меня была аналогичная проблема. Но вместо этого Owin проблема вызывала Microsoft.Owin, очевидно,

Update-Package Owin -Reinstall

Не работает, не было Update-Package Owin

НО

Install-Package Microsoft.Owin

отлично работает для меня, спасибо.

Ответ 3

Интерфейс IAppBuilder находится в пакете Owin. Просто добавьте ссылку в свой файл класса:

с использованием Owin;

И перестройте. Ваш проект подберет это.

Я понятия не имею, почему VS не выбрал это, но это не так. Как только я добавил эту ссылку на мой проект, все встало на свои места.

Ответ 4

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

  • Перейдите к Solution Explorer и найдите свой проект
  • В рамках проекта разверните References; Вы должны увидеть предупреждения о проблемной ссылке.
  • Щелкните правой кнопкой мыши References и откройте Manage NuGet Packages
  • Найдите название проблемной ссылки, т.е. Microsoft.Owin; После загрузки он показывает, что он уже установлен (он установлен, но он установлен неправильно. Проверка свойств > версия на шаге 2 показывает 0.0.0.0)
  • Отметьте Force uninstall, even if there are dependencies on it
  • Удалить
  • Установить
  • Создайте и запустите проект

Проблемы

Невозможно установить Microsoft.Web.Infrastructure, поскольку он уже существует в папке пакетов. Откат...

  • Перейдите в папку проекта и найдите пакеты
  • Найдите проблемный пакет, т.е. Microsoft.Web.Infrastructure
  • Удалить папку
  • Возобновить с шага 7

Альтернативы

Вот альтернативы, которые я прочитал, чтобы исправить эту проблему.

  • Очистить и перестроить проект/решение
  • Перезапустить Visual Studio
  • Перезагрузите компьютер.

Удачи.

Ответ 5

Моя Visual Studio 2013 почему-то не понимала, что существуют пути ссылок. Желтый восклицательный знак перед ссылками был показан для всех добавленных пакетов. Я проверил.. /packages/, но все файлы существовали, я также открыл файл .csproj, который ссылался на правильные пути.

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

Перезагрузка Visual Studio 2013 спасла день по какой-то необъяснимой причине.

Ответ 6

Мой следующий, используя эквивалент в F #, представляет проблему сокрытия IAppBuilder. Оказывается, оговорка Owin интерпретировалась как неполная ссылка System.Web.Http.Owin, хотя ссылка Owin.dll, содержащая пространство имен Owin, было ссылкой.

open System.Net.Http
open System.Web.Http
open Microsoft.Owin
open Owin

Проблема была решена путем переупорядочения записей следующим образом:

open Microsoft.Owin
open Owin
open System.Net.Http
open System.Web.Http

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

Ответ 7

В моем случае я перемещался по папкам проекта и расположению файла решения vs (.sln). Как только я закончил с повторным добавлением проектов, на уровне решения была папка пакетов, а одна осталась в подпапке проекта. Таким образом, в этом проекте ссылки на папки соответствующих пакетов в файле .csproj испортились.

Переустановка или другие советы, касающиеся менеджера пакетов nuget в этой теме, оказались полезными. Я заметил, что после того, как я переустановил несколько пакетов, в моем исходном коде diff из git путь к папке пакетов был изменен в файле csproj.

Перед

<HintPath>packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll</HintPath>
После того, как

After

<HintPath>..\packages\Microsoft.Owin.4.0.1\lib\net45\Microsoft.Owin.dll</HintPath>

Итак, если вы работаете с той же проблемой и у вас много пакетов nuget, может быть проще закрыть все решение, открыть файл csproj в текстовом редакторе, таком как vscode, и исправить относительные ссылки с помощью поиск и замена. Затем просто сохраните, закройте, снова откройте решение в VS и восстановите пакеты nuget. Это должно делать свое дело. (В любом случае вы должны удалить локальную папку пакетов на уровне проекта, чтобы проект действительно потерпел неудачу, если он не получает нужные пакеты.)

Ответ 8

http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

Проверьте, что вы используете визуальную студию Вы можете найти следующий комментарий

Примечание. Если вы используете Visual Studio 2012, шаблон класса SignalR Hub Class (v2) будет недоступен. Вместо этого вы можете добавить простой класс, называемый ChatHub.

Также Примечание. Если вы используете Visual Studio 2012, шаблон стартового класса OWIN будет недоступен. Вместо этого вы можете добавить простой класс под названием "Запуск".