Vous pouvez recevoir un message d'erreur « System.Resources.MissingManifestResourceException » lorsque vous accéder au fichier .resources du formulaire au moment de l'exécution

Traductions disponibles Traductions disponibles
Numéro d'article: 318603 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous exécutez votre Visual Basic .NET ou Visual Basic 2005, Visual C# .NET ou Visual J# .NET Windows application peut s'afficher le message d'erreur suivant soit un similaire lorsque vous chargez un formulaire :
Une exception non gérée du type « System.Resources.MissingManifestResourceException » s'est produite dans mscorlib.dll

Des informations supplémentaires : Could not find toutes les ressources appropriées pour la culture spécifiée (ou la culture neutre) dans l'assembly donné. Vérifiez que « Form1.resources » a été correctement assembly incorporé ou lié dans « myApplication ».

baseName : locationInfo Form1 : nom de fichier de ressource WindowsApplication4.Form1 : assembly Form1.resources : myApplication, version = 1.0.781.33026, Culture = neutral, PublicKeyToken = null
Si vous cliquez sur saut dans la boîte de dialogue d'erreur, et si vous exécutez le code dans l'environnement de développement intégré (IDE), vous découvrez qu'une ligne de code dans l'instruction InitializeComponent origine du problème. Par exemple, si vous créez l'exemple de la section « plus d'informations », cette erreur se produit en association avec un contrôle ImageList . Bien que la message d'erreur peut faire référence à un autre contrôle, notez que resources.GetObject apparaît sur cette ligne de code dans le message d'erreur :
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))) ;

Cause

Ce problème se produit car la classe de formulaire n'est pas la première classe dans le module de code de l'écran.

note Cette spécifique article documents un provoquer ce problème. Il peut autres situations qui peuvent entraîner des résultats similaires.

Résolution

Pour résoudre ce problème, déplacer tous les autres définitions de classe pour qu'elles apparaissent après la définition de classe du formulaire.

Contournement

Pour contourner ce problème, modifiez la propriété nom de fichier de ressources du fichier .resX du projet. Pour ce faire, procédez comme suit :
  1. Démarrez Visual Studio .NET 2003 ou Visual Studio 2005 .
  2. Ouvrez le projet contenant la classe de formulaire localisée dans lequel vous recevez le message d'erreur qui est mentionné dans la section « Symptômes ».
  3. Dans l'Explorateur de solutions, développez tous les dossiers.
  4. Cliquez avec le bouton droit sur Form1.resX , puis cliquez sur Propriétés .
  5. Dans la boîte de dialogue pages de propriétés Form1.resX , développez les propriétés de configuration , cliquez sur général sous ressources gérées .
  6. Modifier la propriété nom de fichier de la ressource de $(IntDir)/ <placeholder>.Form1.resources à $ (IntDir) / <placeholder>.MyForm .resources, puis cliquez sur OK .

    note MyForm est un espace réservé pour le nom de classe de la classe de formulaire vous localisé.
  7. Appuyez sur CTRL + MAJ + S pour enregistrer le projet. Appuyez sur CTRL + MAJ + B pour générer la solution. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
    824495 CORRECTIF : vous recevez un message d'erreur « MissingManifestResourceException » lorsque vous ajoutez une ressource liée dans Visual Studio .NET 2003
  8. Appuyez sur F5 pour exécuter l'application. La s'exécute application et le formulaire est affiché de Form1.
.

Statut

Ce comportement est voulu par la conception même du produit.

Plus d'informations

Un module de code de formulaire peut contenir plusieurs classes. Lorsque le projet est généré, le système de build doit déterminer quelle classe qu'il doit utiliser pour créer le fichier .resources. La conception du système de génération de projet spécifie que la première classe dans le module de code est la classe sur laquelle le fichier .resources est basé. Le fichier .resources est nommé conformément à cette classe, et non du nom de l'écran. Dans la plupart des cas, ces deux noms sont identiques. Toutefois, si ces noms diffèrent, vous recevez le message d'erreur qui est mentionné dans la section « Symptômes ».

Lorsque vous chargez le formulaire au moment de l'exécution, la méthode InitializeComponent devrez peut-être obtenir des objets à partir du fichier .resources. InitializeComponent recherche le fichier .resources Form_Name dans l'assembly. Car le fichier .resources Form_Name initial était jamais créé ou lié à l'assembly, la tentative de récupérer le fichier .resources échoue.

Procédure pour reproduire le problème

  1. Créez un projet d'application Windows dans Visual Basic .NET ou Visual Basic 2005, Visual C# .NET ou Visual J# .NET. Form1 est créé par défaut. Remarque dans Visual Studio 2005, le message d'avertissement suivant s'afficher :
    Composants ne peuvent pas être ajoutés en mode de localisation. Sélectionnez (par défaut) dans la propriété Language pour retourner au formulaire par défaut et ajouter des composants.
    note Vous devez modifier le code dans Visual Basic 2005. Par défaut, Visual Basic crée deux fichiers pour le projet lorsque vous créez un projet Windows Forms. Si le formulaire est nommé Form1, les fichiers deux qui représentent le formulaire sont nommés Form1.vb et Form1.Designer.vb. Vous écrivez le code dans le fichier Form1.vb. Le concepteur Windows Forms écrit le code dans le fichier Form1.Designer.vb. Le concepteur Windows Forms utilise le mot clé partiel pour répartir l'implémentation de Form1 en deux fichiers distincts. Ce comportement empêche le code concepteur généré d'être insérés dans votre code.

    Pour plus d'informations sur les nouvelles améliorations de langage Visual Basic 2005, reportez-vous au site de Web MSDN (Microsoft Developer Network) suivant :
    http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
    Pour plus d'informations sur des classes partielles et le concepteur Windows Forms, reportez-vous au site Web MSDN suivant :
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  2. Ajouter un contrôle ImageList à Form1.
  3. Ajouter un fichier d'icône au contrôle ImageList .
  4. Dans le module de code de Form1, ajoutez le code suivant avant la définition de Form1 : Visual Basic .NET :
    Public Class someClass
    End Class
    					
    Visual C# .NET et Visual J# .NET :
    public class someClass
    {
    }
    					
  5. Générez le projet. Notez que le projet est généré avec succès.
  6. Exécutez le projet. Notez que vous recevez le message d'erreur qui est mentionné dans la section « Symptômes ».

Propriétés

Numéro d'article: 318603 - Dernière mise à jour: vendredi 11 mai 2007 - Version: 4.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft Visual C# .NET 2002 Initiation
  • Microsoft Visual J# .NET 2003 Initiation
  • Microsoft Visual C# .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2003 Initiation
Mots-clés : 
kbmt kbvs2005applies kbvs2005swept kbprb KB318603 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 318603
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com