208 votes

"Un projet avec un type de sortie de bibliothèque de classe ne peut pas être démarré directement"

J'ai téléchargé un projet C# et je souhaite déboguer le projet pour voir comment fonctionne l'implémentation d'un algorithme.

Le projet est arrivé dans un dossier, à l'intérieur de ce dossier il y a -

  1. .sln fichier et
  2. un dossier qui contient les fichiers sources et un .csproj fichier .

J'ai installé Visual Studio et ouvert le .sln présent dans le dossier principal. J'ai construit le projet avec succès, mais lorsque j'essaie de déboguer le projet, j'obtiens ce message :

Un projet dont le type de sortie est Class Library ne peut pas être démarré directement Afin de déboguer ce projet, ajoutez à cette solution un projet exécutable qui fait référence au projet de bibliothèque. Définissez le projet exécutable comme projet de démarrage.

Ce qui est étrange, c'est que je ne vois pas de fonction principale nulle part.

Que dois-je faire pour contourner ce contretemps ?

201voto

Eugene Cheverda Points 4565

Le projet que vous avez téléchargé se compile dans un assemblage dll et fournit un ensemble de classes avec des fonctionnalités implémentées.

Vous devez ajouter à votre solution un nouveau projet dont le type de sortie est soit une application console, soit une application Windows (l'assistant VS Add Project vous proposera différents modèles de projets).

Dans le projet nouvellement ajouté, vous pouvez implémenter une logique pour tester votre bibliothèque de classes.

Le type de sortie du projet peut être trouvé et modifié par les étapes suivantes :

  1. Cliquez à droite sur le projet dans Solution Explorer -> Propriétés.

  2. Dans l'onglet ouvert avec les propriétés, sélectionnez Application et il y aura une ComboBox marquée avec l'étiquette Output Type.

14 votes

Et n'oubliez pas de définir le projet nouvellement créé comme projet de démarrage (clic droit sur le nouveau projet - définir comme projet de démarrage).

0 votes

@bugybunny votre commentaire est ce qui manque dans la réponse ci-dessus !

0 votes

Je suis perplexe ! J'ai créé une nouvelle solution contenant une classe. J'ai ensuite ajouté un projet de test unitaire à la même solution, ajouté un formulaire Windows au projet de test, ajouté des références à la classe dans le test unitaire. J'ai ensuite fait un clic droit et défini le projet de test comme projet de démarrage. Les propriétés de la solution indiquent que le projet de test unitaire est le seul projet de démarrage. Lorsque j'essaie de déboguer, je vois toujours le même message d'erreur indiquant que la classe ne peut pas être lancée directement. Que me manque-t-il ? (VS 2017).

131voto

Suhail Pawane Points 231

Il suffit de faire un clic droit sur la solution de projet Une fenêtre s'ouvre. Développez les propriétés communes. Sélectionnez Start Up Project

Sur le côté droit, sélectionnez le bouton radio "Single Startup Project". Sélectionnez votre projet et appliquez.

C'est tout. Maintenant, enregistrez et construisez votre projet. Exécutez le projet pour voir la sortie.

0 votes

Cela ne fonctionne que si le type de sortie du projet n'est pas Class Library, n'est-ce pas ?

0 votes

Cliquez avec le bouton droit de la souris sur la solution du projet > sélectionnez propriétés > une fenêtre s'ouvre (page de propriétés de la solution), vous pouvez maintenant voir les propriétés communes.

21voto

Ashish Agrawal Points 69

Il faut juste partir :

Solution Explorer-->Aller à Properties --->Changer (Single Startup project) de .dll à .web

Essayez ensuite de le déboguer.

Votre problème sera sûrement résolu.

12voto

James Curran Points 55356

Ce qui est étrange, c'est que je ne vois pas de fonction principale nulle part.

C'est exactement votre problème. Le projet crée simplement une DLL. Il n'a pas d'exécutable à lancer.

Vous devrez ajouter un deuxième projet, qui est un exécutable qui fait référence à l'autre projet, et appelle quelque chose dans celui-ci.

0 votes

Hey James, Ok j'ai ajouté un nouveau projet dans la même solution. Un nouveau fichier .cs est créé qui a une fonction principale. Maintenant, à quoi dois-je faire référence ? A la dll vous voulez dire ? Lorsque je fais un clic droit sur l'onglet Références, j'obtiens une fenêtre Ajouter une référence.

0 votes

Accédez à l'onglet Projets. L'ensemble des assemblages définis dans votre solution sera disponible pour être référencé.

1 votes

Oui, exactement. N'oubliez pas d'ajouter des utilisations spécifiques pour avoir la possibilité d'utiliser les classes de cette bibliothèque.

5voto

AllenG Points 6242

Vous aurez besoin d'une sorte d'application (les applications Console sont mes préférées pour le débogage, mais un WinForm fera l'affaire) qui utilise votre bibliothèque de classes. Ajoutez simplement un nouveau projet (dans la même solution) d'une application console ou d'une application Windows Forms, et ajoutez une référence à votre projet actuel. Une fois que vous avez fait cela, faites tous les appels dont vous avez besoin, définissez vos points d'arrêt, et allez en ville.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X