Comment puis-je obtenir mon API Web app à courir à nouveau après la mise à jour MVC 5 et Web API 2?

J'ai mis à jour mon API Web app à l'funkelnagelneu versions à l'aide de ce guide:

http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2

Cependant, après être passé par les étapes (il semble que tout cela doit être automatisé, de toute façon), j'ai essayé et obtenu, "Un projet avec un Type de Sortie de la Bibliothèque de la Classe ne peut pas être démarré directement"

Ce que Sam Collines Frères Café qui se passe ici? Qui a dit que c'était une bibliothèque de classe?

J'ai donc ouvert Projet > Propriétés, et il a changé (il était marqué comme "Bibliothèque de classes" pour une raison quelconque - soit il n'était pas hier, ou l'a été et a bien fonctionné) à une Sortie de Type "Application Windows" ("Console Application" et "Bibliothèque de classes", les seules autres options).

Maintenant, il ne compile pas, de se plaindre: "Programme 'c:\Platypus_Server_WebAPI\PlatypusServerWebAPI\PlatypusServerWebAPI\obj\Debug\PlatypusServerWebAPI.exe" ne contient pas statique Principale méthode appropriée pour un point d'entrée..."

Comment puis-je obtenir mon API Web app en arrière et en cours d'exécution en vue de ce dilemme?

Mise à JOUR

À la recherche dans les packages.config, deux entrées semblent menton-scratch-digne:

<package id="Microsoft.AspNet.Providers" version="1.2" targetFramework="net40" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />

Toutes les autres cibles net451. Cela pourrait être le problème? Dois-je supprimer ces paquets?

Mise à JOUR 2

J'ai essayé de désinstaller Microsoft.Web.Paquet Infrastructure (sa description m'amène à croire que je n'ai pas besoin de cela; aussi, il n'a pas de dépendances) via le gestionnaire de package NuGet, mais il me dit, "NuGet impossible d'installer ou de désinstaller le paquet sélectionné dans le cadre de ce projet(s). [mine]"

Mise à JOUR 3

Je suis passé par les étapes à nouveau, et a trouvé que j'avais raté une étape. J'ai dû changer cette entrée dans l'Application web.Fichier de configuration :

<dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

(à partir de "4.0.0.0" à "5.0.0.0")

...mais j'obtiens toujours le même résultat - il reconstruit/compile, mais ne fonctionnera pas, avec "Un projet avec un Type de Sortie de la Bibliothèque de la Classe ne peut pas être démarré directement"

Mise à JOUR 4

Réflexion sur le message d'erreur, qu'il ne peut pas ouvrir directement une bibliothèque de classe, j'ai pensé, "Assurez-vous que vous ne pouvez pas/ne pas -- c'est une application web, pas un projet. J'ai donc suivi une intuition, fermé le projet, et a rouvert comme un site web (au lieu de la réouverture d'un projet).

C'est devenu de plus en plus loin, au moins; maintenant, je vois un YSOD:

Impossible de charger le fichier ou l'assembly 'Système.Web.Les pages web.Rasoir, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.

Mise à JOUR 5

Remarque: Le projet est maintenant (après avoir ouvert un site web) nommé "localhost_48614"

Et...il n'est plus un "Références" dossier...?!?!?

Pour que YSOD je suis arriver, les instructions officielles (http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2) dit de le faire, et je cite:

"Mise à jour de tous les éléments qui contiennent “le Système de.Web.Les pages web.Rasoir” à partir de la version “2.0.0.0” à

version 3.0.0.0”
."

Mise à JOUR 6

Quand j'sélectionnez Outils > Gestionnaire de paquets de Bibliothèque > Gérer les Packages NuGet pour la Solution maintenant, je reçois, "l'Opération a échoué. Impossible de localiser la solution d'annuaire. Veuillez vous assurer que la solution a été enregistré."

J'ai donc l'enregistrer, et il l'enregistre avec cette funky nouveau nom (C:\Users\clay\Documents\Visual Studio 2013\Projets\localhost_48614\localhost_48614.sln)

- Je obtenir le Jaune Bande de Lumières à travers le haut du Gestionnaire de Package NuGet dire
moi, "Certains packages NuGet sont absentes de cette solution. Cliquez sur restaurer à partir de votre en ligne
les sources de paquets.
"

Je n' (cliquez sur le bouton "Restaurer", qui est), et il télécharge les paquets manquants ... je me retrouve avec 30 paquets.

J'essaye d'exécuter l'application/site à nouveau, et ... de l'ancien YSOD devient une erreur de compilation:

Le pré-démarrage de l'application méthode d'initialisation Démarrer sur le type de Système.Web.Mvc.PreApplicationStartCode a déclenché une exception avec le message d'erreur suivant: impossible de charger le fichier ou l'assembly 'Système.Web.Les pages web.Rasoir, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' ou une de ses dépendances. Le système ne peut pas trouver le fichier spécifié..

Argghhhh!!! (et c'est même pas en parler-comme-un-pirate jour).

Mise à JOUR 7

Je suis toujours curieux de savoir pourquoi Humpty Dumpty est tombé et s'est cassé la couronne (façon de parler), mais j'ai finalement jeté l'éponge et a créé un nouveau projet, copier-coller le code et il fonctionne très bien (VS 2013 et Web API, avec le RESTE des méthodes appelées à partir d'un rapport à 2008, .NET 3.5 client app).

  • L'Api Web de projets sont des bibliothèques de classe. Il semble que vous êtes tout simplement pas le réglage par défaut de démarrage du projet.
  • Ok, je définir le type de Sortie arrière de la Classe Bibliothèque; j'ai cliqué avec le bouton droit le projet (le seul dans la solution) et sélectionné l'option "Définir comme Projet de Démarrage" à essayer de l'exécuter, je reçois le même message d'erreur. J'ai ensuite cliqué avec le bouton droit de la solution et choisis "Définir les Projets de Démarrage..." j'ai "le projet de démarrage Unique" est sélectionné, avec le nom du projet retenu; toujours le même résultat, si.
  • En regardant ceci: stackoverflow.com/questions/386831/..., de la accepté de répondre par Quibblesome m'a fait réfléchir sur les propriétés du fichier. Je vois que mon *.cs fichiers ont Construire l'ensemble des mesures de Compiler et de les Copier vers le Répertoire de Sortie définie à Ne pas copier. C'est ainsi que cela devrait être, non?
  • J'ai mis à jour un projet à l'aide de cette procédure et n'ont pas tous les problèmes. Il semble que vous ayez changé plus de choses que vous devriez. Je vous recommande d'annuler vos modifications, obtenir la dernière version de travail à partir de votre source de contrôle et d'essayer de nouveau. Vous ne devriez pas avoir à changer de construire des actions après cette mise à jour.
  • Natan devrait être la réponse .... lors de la migration de mvc4 à mvc5 il y a sur le processus de décharger et de recharger le projet à cette étape, l'reloaded projet doit être défini en tant que projet de start-up de nouveau