none
point d'entrée introuvable dans l'assemblage c# RRS feed

  • Question

  • Bonjour,

    j´ai un code écrit en C# et lorsque je compile celui ci j obtiens l erreur Suivante.

    An unhandled exception of type 'System.MissingMethodException' occurred in mscorlib.dll
    
    Additional information: Entry point not found in assembly 'Chart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9096f96caddd3cad'.

    comment corriger cette erreur

    Merci

    mardi 10 février 2015 10:35

Réponses

  • D'accord, je vois...

    Si le programme est destiné a être exécuté, il faut que le programme ait comme type de sortie "Application Windows" et non pas "Bibliothèque de classe" sinon ça ne peut pas fonctionner et c'est logique que ça se comporte ainsi.

    Si vous vouliez en faire une bibliothèque de classe, il aurait fallut faire un autre projet de type application Windows dans votre solution qui dépendrait de la première bibliothèque de classe.


    Philippe

    • Marqué comme réponse maness jeudi 12 février 2015 11:30
    mercredi 11 février 2015 10:58
  • Bonjour,
    Je pense qu'il s'agit de votre méthode de signature d'executable qui n'est pas bonne.

    Regardez plutôt le topic suivant :

    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.


    • Modifié BEAUGRAND Kevin mercredi 11 février 2015 11:03
    • Marqué comme réponse maness jeudi 12 février 2015 11:30
    mercredi 11 février 2015 11:03
  • Maness,

    En fait signer le manifest "ClickOnce" vous permettra de pouvoir le déployer à l'aide de la technologie "ClickOnce" via réseau ou CDROM.

    Signer l'assemblage vous permet de donner à votre assemblage une identité forte. Donner une identité forte est important si votre assemblage est destiné à un large public. Comme il est possible d'avoir plusieurs assemblages portant le même nom, le seul moyen de les distinguer alors serait l'identité forte. Cela consiste en fait à lui associer une clé publique, et pourra éventuellement être vérifié si vous fournissez un fichier "pfx" avec un mot de passe qui du coup est la clé privée correspondante.

    Maintenant, en ce qui concerne votre assemblage, si vous faites une bibliothèque de classe, cela va générer un fichier "dll" qui pourra être utilisé par des exécutables. Dans une bibliothèque de classe, il est inutile d'avoir la classe "Main" puisque la bibliothèque de classe n'est pas destiné à avoir un point d'entrée.

    Alors, comme je l'ai dit plus haut, si c'est vraiment ce que vous voulez faire, il faut donc créer un nouveau projet de type "Application Windows" dans la même solution, puis dans ce nouveau projet clic droit sur "référence", et ajouter la dll comme référence en la cherchant bien dans la solution.

    Normalement toutes ces démarches sont expliquées sur la documentation en ligne MSDN et même sur divers tutoriels si vous cherchez bien.

    Assemblage avec un nom fort :
    https://msdn.microsoft.com/fr-fr/library/xc31ft41(v=vs.110).aspx

    ClickOnce :
    https://msdn.microsoft.com/fr-fr/library/142dbbz4(v=vs.90).aspx

    Création d'assemblage de type bibliothèque de classe :
    http://openclassrooms.com/courses/apprenez-a-developper-en-c/creer-un-projet-bibliotheques-de-classes


    Philippe

    • Marqué comme réponse maness jeudi 12 février 2015 11:30
    jeudi 12 février 2015 07:17

Toutes les réponses

  • Bonjour,

    Pourriez-vous nous dire comment se compose votre projet s'il vous plait? J'ai vu sur un autre forum que Chart est une application Windows forms que vous avez fait, et vous y avez ajouté une DLL?

    Avez-vous bien une fonction appelée "Main" dans un fichier "Program.cs"? Auriez-vous changé l'objet de démarrage dans les propriétés du projet?


    Philippe

    mardi 10 février 2015 16:13
  • Bonjour,

    Chart est bien une application Windows Forms. juste que je suis allé dans Properties -> Application -> OutPutType et j´ai selectionner Class Librairy pour pouvoir generer la DLL que j´ai ensuite signé. aprés cela j´ai obtenu un "ChartKey.snk" dans ma "solution Explorer".

    Lorsque je repars dans Properties et que je choisie l options OutPut type "Windows Application" apres avoir fait le Build je resois l erreur que vous pouvez voir sur l´image.

    j´ai bien une fonction "Main". voila le code de mon fichier "Programm.cs"

    namespace Chart
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Chart1());
            }
        }
    }

    Merci pour vos Suggestions

    mercredi 11 février 2015 10:49
  • D'accord, je vois...

    Si le programme est destiné a être exécuté, il faut que le programme ait comme type de sortie "Application Windows" et non pas "Bibliothèque de classe" sinon ça ne peut pas fonctionner et c'est logique que ça se comporte ainsi.

    Si vous vouliez en faire une bibliothèque de classe, il aurait fallut faire un autre projet de type application Windows dans votre solution qui dépendrait de la première bibliothèque de classe.


    Philippe

    • Marqué comme réponse maness jeudi 12 février 2015 11:30
    mercredi 11 février 2015 10:58
  • Bonjour,
    Je pense qu'il s'agit de votre méthode de signature d'executable qui n'est pas bonne.

    Regardez plutôt le topic suivant :

    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.


    • Modifié BEAUGRAND Kevin mercredi 11 février 2015 11:03
    • Marqué comme réponse maness jeudi 12 février 2015 11:30
    mercredi 11 février 2015 11:03
  • Ok.

    au départ le type de sortie etait "Application Windows" et le programme s´éxecutait bien.  j ai changé en "Bibliothéque de classe" pour pouvoir generer la DLL. aprés avoir genéré la DLL je reviens changer le type de sortie en "Application Windows" mais le programm ne s éxecute plus.

    y a t-il une explication a cela?

    stp comment faire en sorte que le nouveau Projet de ma solution depende de la premiere bibliotheque de classe?

    Merci

    mercredi 11 février 2015 11:14
  • Salut Kevin,

    es ce que cela signifie que je devrais prendre l´option "Sign the ClickOnce mainfests" pour avoir une signature  Key.pfx au lieu de "Sign the assembly"?

    quelle est la difference entre les 2

    Merci

    mercredi 11 février 2015 11:28
  • Maness,

    En fait signer le manifest "ClickOnce" vous permettra de pouvoir le déployer à l'aide de la technologie "ClickOnce" via réseau ou CDROM.

    Signer l'assemblage vous permet de donner à votre assemblage une identité forte. Donner une identité forte est important si votre assemblage est destiné à un large public. Comme il est possible d'avoir plusieurs assemblages portant le même nom, le seul moyen de les distinguer alors serait l'identité forte. Cela consiste en fait à lui associer une clé publique, et pourra éventuellement être vérifié si vous fournissez un fichier "pfx" avec un mot de passe qui du coup est la clé privée correspondante.

    Maintenant, en ce qui concerne votre assemblage, si vous faites une bibliothèque de classe, cela va générer un fichier "dll" qui pourra être utilisé par des exécutables. Dans une bibliothèque de classe, il est inutile d'avoir la classe "Main" puisque la bibliothèque de classe n'est pas destiné à avoir un point d'entrée.

    Alors, comme je l'ai dit plus haut, si c'est vraiment ce que vous voulez faire, il faut donc créer un nouveau projet de type "Application Windows" dans la même solution, puis dans ce nouveau projet clic droit sur "référence", et ajouter la dll comme référence en la cherchant bien dans la solution.

    Normalement toutes ces démarches sont expliquées sur la documentation en ligne MSDN et même sur divers tutoriels si vous cherchez bien.

    Assemblage avec un nom fort :
    https://msdn.microsoft.com/fr-fr/library/xc31ft41(v=vs.110).aspx

    ClickOnce :
    https://msdn.microsoft.com/fr-fr/library/142dbbz4(v=vs.90).aspx

    Création d'assemblage de type bibliothèque de classe :
    http://openclassrooms.com/courses/apprenez-a-developper-en-c/creer-un-projet-bibliotheques-de-classes


    Philippe

    • Marqué comme réponse maness jeudi 12 février 2015 11:30
    jeudi 12 février 2015 07:17
  • Bonjour á tous,

    Merci Philippe pour les explications.je vais reessayer la création de mon assemblage et faire signe si celui ci fonctionne maintenant bien

    Merci

    jeudi 12 février 2015 08:12
  • Salut,

    merci pour vos suggestions. le probleme provenait de mon Assemblage signé qui n´etait pas bien lier avec mon Projet.

    merci encore

    jeudi 12 février 2015 11:32