Ενδέχεται να λάβετε ένα μήνυμα λάθους "System.Resources.MissingManifestResourceException" κατά την πρόσβαση στο αρχείο .resources της φόρμας κατά το χρόνο εκτέλεσης

Συμπτώματα

Όταν εκτελείτε το Visual Basic .NET ή 2005 Visual Basic, Visual C# .NET ή Visual J# .NET Windows εφαρμογή, ενδέχεται να λάβετε το ακόλουθο μήνυμα λάθους ή κάποιο παρόμοιο όταν φορτώνετε μια φόρμα:
Παρουσιάστηκε μια ανεπίλυτη εξαίρεση τύπου 'System.Resources.MissingManifestResourceException' στο mscorlib.dll

Πρόσθετες πληροφορίες: δεν ήταν δυνατή η εύρεση πόρων που είναι κατάλληλα για την καθορισμένη κουλτούρα (ή την ουδέτερη κουλτούρα) στη δεδομένη συγκρότηση. Βεβαιωθείτε ότι το "Form1.resources" ήταν σωστά ενσωματωμένες ή συνδεδεμένες σε συγκρότηση "myApplication".

baseName: Form1 locationInfo: όνομα αρχείου πόρου WindowsApplication4.Form1: η συγκρότηση Form1.resources: myApplication, έκδοση = 1.0.781.33026, κουλτούρα = ουδέτερη, PublicKeyToken = null
Εάν κάνετε κλικ στο κουμπί Αλλαγή στο παράθυρο διαλόγου σφάλματος και εάν εκτελείτε τον κωδικό με το ενσωματωμένο περιβάλλον ανάπτυξης (IDE), θα ανακαλύψετε ότι μια γραμμή κώδικα μέσα στη δήλωση InitializeComponent προκαλεί αυτό το ζήτημα. Για παράδειγμα, εάν δημιουργήσετε το δείγμα από την ενότητα "Περισσότερες πληροφορίες", αυτό το σφάλμα προκύπτει σε συνδυασμό με ένα στοιχείο ελέγχου ImageList . Παρόλο που το μήνυμα λάθους μπορεί να αναφέρεται σε ένα διαφορετικό στοιχείο ελέγχου, θα παρατηρήσετε ότι πόρους. GetObject εμφανίζεται σε αυτήν τη γραμμή κώδικα στο μήνυμα λάθους:
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));

Αιτία

Αυτό το ζήτημα παρουσιάζεται επειδή η κλάση φόρμας δεν είναι η πρώτη κλάση στη λειτουργική μονάδα κώδικα της φόρμας.

Σημείωση Αυτό μία συγκεκριμένη έγγραφα του άρθρου αιτία αυτού του ζητήματος. Μπορεί να υπάρχουν και άλλες περιπτώσεις που μπορεί να οδηγήσει σε παρόμοια αποτελέσματα.

Προτεινόμενη αντιμετώπιση

Για να επιλύσετε αυτό το ζήτημα, μετακινήστε όλα τα άλλα ορισμούς κλάσης ώστε να εμφανίζονται μετά τον ορισμό κλάσης της φόρμας.

Εναλλακτικός τρόπος αντιμετώπισης

Για να επιλύσετε αυτό το ζήτημα, αλλάξτε την ιδιότητα Όνομα αρχείου πόρων του αρχείου .resX του έργου. Για να το κάνετε αυτό, ακολουθήστε τα εξής βήματα:
  1. Ξεκινήστε το Visual Studio .NET 2003 ή το Visual Studio 2005.
  2. Ανοίξτε το έργο που περιέχει τις μεταφρασμένες κλάσης φόρμας όπου λαμβάνετε το μήνυμα λάθους που αναφέρεται στην ενότητα "Συμπτώματα".
  3. Στην Εξερεύνηση λύσεων, αναπτύξτε όλους τους φακέλους.
  4. Κάντε δεξιό κλικ στο Form1.resXκαι, στη συνέχεια, κάντε κλικ στο κουμπί Ιδιότητες.
  5. Στο πλαίσιο διαλόγου Σελίδες ιδιοτήτων Form1.resX , αναπτύξτε το στοιχείο Ρύθμισης παραμέτρων ιδιοτήτωνκαι, στη συνέχεια, κάντε κλικ στο κουμπί Γενικά στην περιοχή Διαχείριση πόρων.
  6. Αλλάξτε την ιδιότητα Όνομα αρχείου πόρων από $ (IntDir) / < σύμβολο κράτησης θέσης > . Form1.resources $ (IntDir) / < σύμβολο κράτησης θέσης >. MyForm .resources, και στη συνέχεια κάντε κλικ στο κουμπί OK.

    Σημείωση MyForm είναι ένα σύμβολο κράτησης θέσης για το όνομα κλάσης της κλάσης φόρμας που θα προσαρμοστεί.
  7. Πιέστε το συνδυασμό πλήκτρων CTRL + SHIFT + S για να αποθηκεύσετε το έργο. Πιέστε το συνδυασμό πλήκτρων CTRL + SHIFT + B, για τη δημιουργία της λύσης. Για περισσότερες πληροφορίες, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

    824495 ΕΠΙΔΙΌΡΘΩΣΗ: εμφανίζεται το μήνυμα λάθους "MissingManifestResourceException" κατά την προσθήκη ενός συνδεδεμένου πόρου στο Visual Studio .NET 2003

  8. Πατήστε F5 για να εκτελέσετε την εφαρμογή. Η εφαρμογή εκτελείται, και το εμφανίζεται η φόρμα Form1.
.

Κατάσταση

Αυτή η συμπεριφορά οφείλεται στη σχεδίαση.

Περισσότερες πληροφορίες

Μια λειτουργική μονάδα κώδικα της φόρμας μπορεί να περιέχει πολλές κλάσεις. Όταν δημιουργείται το έργο, το σύστημα δημιουργίας πρέπει να αποφασίσετε ποια κλάση που πρέπει να χρησιμοποιήσει για να δημιουργήσετε το αρχείο .resources. Η σχεδίαση του συστήματος build έργου Καθορίζει ότι η πρώτη κλάση στη λειτουργική μονάδα κώδικα την κλάση στην οποία βασίζεται στο αρχείο .resources. Το αρχείο .resources ονομάζεται σύμφωνα με αυτήν την κλάση, όχι το όνομα της φόρμας. Στις περισσότερες περιπτώσεις, αυτά τα δύο ονόματα είναι τα ίδια. Ωστόσο, εάν τα ονόματα διαφέρουν, λαμβάνετε το μήνυμα λάθους που αναφέρεται στην ενότητα "Συμπτώματα".

Κατά τη φόρτωση της φόρμας κατά το χρόνο εκτέλεσης, τη μέθοδο InitializeComponent ίσως χρειαστεί να λάβετε αντικείμενα από το αρχείο .resources. InitializeComponent αναζητά όνομα_φόρμαςστο αρχείο .resources στη συγκρότηση. Επειδή το αρχικό
Όνομα_φόρμαςαρχείο .resources ποτέ δημιουργήθηκε ή συνδέονται με τη συγκρότηση, αποτυγχάνει η προσπάθεια να ανακτήσετε το αρχείο .resources.

Βήματα για την αναπαραγωγή της συμπεριφοράς

  1. Δημιουργήστε ένα έργο εφαρμογών των Windows στο Visual Basic .NET ή 2005 Visual Basic, Visual C# .NET ή Visual J# .NET. Από προεπιλογή, δημιουργείται η φόρμα Form1. Σημείωση Στο Visual Studio 2005, λαμβάνετε το ακόλουθο προειδοποιητικό μήνυμα:
    Δεν είναι δυνατή η προσθήκη στοιχείων σε κατάσταση μετάφρασης. Επιλέξτε (προεπιλογή) στην ιδιότητα γλώσσας για να επιστρέψετε την προεπιλεγμένη φόρμα και να προσθέσετε στοιχεία.
    Σημείωση Πρέπει να αλλάξετε τον κωδικό του 2005 Visual Basic. Από προεπιλογή, η Visual Basic δημιουργεί δύο αρχεία για το έργο, όταν δημιουργείτε ένα έργο Windows φόρμες. Εάν η φόρμα ονομάζεται Form1, τα δύο αρχεία που αντιπροσωπεύει τη φόρμα ονομάζονται Form1.vb και Form1.Designer.vb. Συντάξτε τον κώδικα στο αρχείο Form1.vb. Η σχεδίαση φορμών Windows εγγράφει τον κώδικα στο αρχείο Form1.Designer.vb. Ο σχεδιαστής των Windows χρησιμοποιεί τη μερική λέξη-κλειδί για να διαιρέσετε την εφαρμογή της φόρμας Form1 σε δύο ξεχωριστά αρχεία. Αυτή η συμπεριφορά αποτρέπει είναι διάσπαρτα με τον κώδικά σας τον κώδικα που δημιουργείται από το σχεδιαστή.

    Για περισσότερες πληροφορίες σχετικά με τις νέες βελτιώσεις γλώσσα Visual Basic 2005, επισκεφθείτε την ακόλουθη τοποθεσία του Microsoft Developer Network (MSDN) στο Web:

    Για περισσότερες πληροφορίες σχετικά με τη μερική κλάσεις και ο σχεδιαστής των Windows, επισκεφθείτε την ακόλουθη τοποθεσία MSDN στο Web:

  2. Προσθέστε ένα στοιχείο ελέγχου του ImageList Form1.
  3. Προσθέσετε ένα αρχείο εικόνας για το στοιχείο ελέγχου ImageList .
  4. Στη λειτουργική μονάδα κώδικα της φόρμας Form1, προσθέστε τον ακόλουθο κώδικα πριν από τον ορισμό της φόρμας Form1: Visual Basic .NET:
    Public Class someClassEnd Class

    Visual C# .NET και Visual J# .NET:
    public class someClass{
    }

  5. Δημιουργήστε το έργο. Παρατηρήστε ότι το έργο δημιουργεί με επιτυχία.
  6. Εκτελέστε το έργο. Παρατηρήστε ότι λαμβάνετε το μήνυμα λάθους που αναφέρεται στην ενότητα "Συμπτώματα".
Ιδιότητες

Αναγνωριστικό άρθρου: 318603 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 2

Σχόλια