web-dev-qa-db-fra.com

Le type ou l'espace de noms IAppBuilder est introuvable (manquant à l'aide d'une directive pr une référence Assembly)

Je travaille sur une application Asp.Net MVC 4 dans laquelle j'utilise SignalR 2.0.1 et que je mappe à l'aide de la classe Owin Startup. Tout a bien fonctionné au début.

Soudainement, lorsque j'ai essayé de reconstruire mon application, il m'a été répondu que le type est un espace de noms IAppbuilder introuvable.

Voici mon cours de démarrage

using Microsoft.Owin;
using Owin;
using WhiteBoardApp;

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

J'ai aussi installé le paquet Owin, et pour certaines raisons, je ne pouvais pas trouver la classe Owin Startup, j'ai donc ajouté une classe normale et inclus toutes les références nécessaires. Puis-je savoir où je fais une erreur

62
DoIt

Essayez d’utiliser Package Manage Console et faites

Update-Package Owin -Reinstall
132
scottt732

J'avais un problème similaire. Mais au lieu de cela Owin, le problème était à l’origine de Microsoft.Owin, évidemment

Update-Package Owin -Reinstall

Ne fonctionnait pas, ni Update-Package Owin

MAIS

Install-Package Microsoft.Owin

a bien fonctionné pour moi, merci.

22
Иво Недев

L'interface IAppBuilder se trouve sous le paquet Owin. Ajoutez simplement une référence dans votre fichier de classe:

en utilisant Owin;

Et reconstruire. Votre projet va le prendre.

Je ne sais pas pourquoi VS ne l'a pas compris, mais ce n'est pas le cas. Une fois que j'ai ajouté cette référence à mon projet, tout s'est mis en place.

7
chris smith

J'ai rencontré le même problème lors de la construction de mon projet. Voici les étapes qui ont aidé à résoudre mon problème:

  1. Aller à Solution Explorer et cherchez votre projet
  2. Sous votre projet, développez le fichier References; Vous devriez voir des avertissements sur la référence problématique
  3. Faites un clic droit References et ouvrez Manage NuGet Packages
  4. Recherchez le nom de la référence problématique, c'est-à-dire Microsoft.Owin; Après le chargement, il indique qu’il est déjà installé (c’est le cas, mais il n’a pas été installé correctement. Vérification des propriétés> version à l’étape 2: 0.0.0.0)
  5. Vérifier Force uninstall, even if there are dependencies on it
  6. Désinstaller
  7. Installer
  8. Construire et exécuter le projet

Problèmes

Impossible d'installer Microsoft.Web.Infrastructure car il existe déjà dans le dossier packages. Reculer...

  1. Accédez au dossier de votre projet et recherchez les packages.
  2. Trouver le paquet problématique, c'est-à-dire Microsoft.Web.Infrastructure
  3. Supprimer le dossier
  4. Reprendre de l'étape 7

Des alternatives

Voici les alternatives que j'ai lues sur le point de résoudre ce genre de problème.

  • Nettoyer et reconstruire projet/solution
  • Redémarrer Visual Studio
  • Redémarrer le PC

Bonne chance.

3
iwillnot

Mon Visual Studio 2013 pour une raison quelconque n'a pas réalisé que les chemins de références existaient. Le point d'exclamation jaune devant les références était affiché pour tous les packages ajoutés. J'ai vérifié ../packages/ mais tous les fichiers existaient, j'ai aussi ouvert le fichier .csproj qui référençait les chemins corrects.

La fermeture et l'ouverture de la solution ont généré beaucoup d'erreurs et n'ont pas pu charger les projets inclus dans la solution.

Le redémarrage de Visual Studio 2013 a sauvé la journée pour une raison inexpliquée.

2
Crypth

Mon utilisation suivante de l'équivalent en F # pose le problème de cacher IAppBuilder. Il s'avère que la clause Owin était interprétée comme une référence System.Web.Http.Owin incomplète, même si le fichier Owin.dll fournissant l'espace de noms Owin était référencé.

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

Le problème a été résolu en réorganisant les utilisations comme suit:

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

... cela est peut-être un bogue propre au compilateur F # et les conflits de noms sont mieux gérés en C # et ailleurs.

1
George

Dans mon cas, j'avais déplacé les dossiers du projet et l'emplacement du fichier de solution vs (.sln). Une fois que j'ai eu fini de rajouter les projets, il y avait un dossier de packages au niveau de la solution et il en restait un dans un sous-dossier de projet. De cette façon, dans ce projet, les liens de dossier de package relatifs dans le fichier .csproj se sont égarés.

La réinstallation ou d’autres astuces concernant le gestionnaire de paquets Nuget dans ce fil de discussion ont été utiles. J'ai remarqué qu'après avoir réinstallé quelques paquets, dans le code source de mon git diff, le chemin du dossier des paquets avait été modifié dans le fichier csproj.

Avant

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

Après

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

Donc, si vous exécutez le même problème et que vous avez beaucoup de packages de nuget, il sera peut-être plus facile de fermer toute la solution, ouvrez le ou les fichiers csproj dans un éditeur de texte tel que vscode et corrigez les liens relatifs avec search and replace . Ensuite, enregistrez, fermez, rouvrez la solution dans le VS et restaurez les paquets Nuget. Cela devrait faire l'affaire. (Dans tous les cas, vous devez supprimer le dossier des packages locaux au niveau du projet, afin que le projet échoue réellement s'il ne récupère pas les packages appropriés.)

0
AIsmaili