2010-11-05 10 views
9

त्रुटि लॉग:"TypeInitializationException था बिना क्रिया"

System.TypeInitializationException was unhandled 
    Message="The type initializer for 'MaxDavidMP4.Program' threw an exception." 
    Source="MaxDavidMP4" 
    TypeName="MaxDavidMP4.Program" 
    StackTrace: 
     at MaxDavidMP4.Program.Main() 
     at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: System.IO.FileNotFoundException 
     Message="Could not load file or assembly 'Microsoft.Xna.Framework, Version=3.1.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d' or one of its dependencies. The system cannot find the file specified." 
     Source="MaxDavidMP4" 
     FileName="Microsoft.Xna.Framework, Version=3.1.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d" 
     FusionLog="=== Pre-bind state information ===\r\nLOG: User = Max-PC\\Max\r\nLOG: DisplayName = Microsoft.Xna.Framework, Version=3.1.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d\n (Fully-specified)\r\nLOG: Appbase = file:///C:/Users/Max/Desktop/maximas save/School/University/CSS 450/MaxDavidMP4/MaxDavidMP4/bin/Debug/\r\nLOG: Initial PrivatePath = NULL\r\nCalling assembly : UWBGL_XNA_Lib10, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.\r\n===\r\nLOG: This bind starts in default load context.\r\nLOG: No application configuration file found.\r\nLOG: Using machine configuration file from C:\\Windows\\Microsoft.NET\\Framework64\\v2.0.50727\\config\\machine.config.\r\nLOG: Post-policy reference: Microsoft.Xna.Framework, Version=3.1.0.0, Culture=neutral, PublicKeyToken=6d5c3888ef60e27d\r\nLOG: The same bind was seen before, and was failed with hr = 0x80070002.\r\n" 
     StackTrace: 
      at MaxDavidMP4.Model..ctor() 
      at MaxDavidMP4.Program..cctor() in C:\Users\Max\Desktop\maximas save\School\University\CSS 450\MaxDavidMP4\MaxDavidMP4\Program.cs:line 14 
     InnerException: 

Program.cs कोड:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Windows.Forms; 

namespace MaxDavidMP4 
{ 
    static class Program 
    { 
     /// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     /// 
     static Model model = new Model(); 

     [STAThread] 
     static void Main() 
     { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Application.Run(new Form1()); 
     } 

     public static Model getModel() 
     { 
      return model; 
     } 
    } 
} 

ऐसा लगता है इस मुद्दे को Microsoft.Xna.Framework 3.1.0 के साथ है समावेशन, लेकिन मुझे यकीन है कि पथ सही है, और मेरी सभी अन्य परियोजनाएं इस सेटअप के साथ ठीक काम करती हैं। यह वीएस 2008 में है, सी #, बीटीडब्ल्यू। मुझे याद है कि आखिरी बार मुझे यह मुद्दा था, मुझे वीएस 2008 में शीर्ष केंद्रीय ड्रॉपडाउन सूचियों में से एक को 'x86' में सेट करना पड़ा और इसे ठीक किया गया, लेकिन अब इससे कोई फर्क नहीं पड़ता।

+1

डीबग पर क्लिक करें -> अपवाद और सभी फेंक दिए गए चेकबॉक्स पर जांचें। इससे आपको समस्या का निर्धारण करने में मदद मिलेगी। –

उत्तर

10

यह संभावना है कि आपको पिछली बार एक ही समस्या हो रही है। मैं एक और कारण के बारे में सोच नहीं सकता कि आपको वह अपवाद मिल जाएगा। ऐसा लगता है कि आपने ठीक से ठीक से लागू नहीं किया है।

ध्यान दें कि यह आंतरिक अपवाद है जो यहां मायने रखता है। यदि आपने प्रारंभिक प्रारंभिकरण के बजाए कार्यक्रम के मुख्य भाग में अपना मॉडल बनाया है तो बाहरी अपवाद दूर हो जाएगा।

तो अपने अपवाद मूल रूप से है:

विधानसभा 'Microsoft.Xna.Framework' लोड नहीं कर सका। सिस्टम निर्दिष्ट फाइल का पता लगाने में नाकामयाब रहा।

Shawn Hargreaves writes कि अपवाद वास्तव में मतलब है:

एक 64 बिट प्रक्रिया में 32 बिट विधानसभा 'Microsoft.Xna.Framework' लोड नहीं कर सका। आपका गेम प्रोजेक्ट 'किसी भी सीपीयू' मंच पर सेट है, जब इसे 'x86' निर्दिष्ट करना चाहिए।

ठीक है:

अपने दृश्य स्टूडियो उपकरण पट्टी में, वहाँ एक कॉम्बो बॉक्स कह 'कोई भी सीपीयू' होना चाहिए।

यदि आप सी # एक्सप्रेस का उपयोग कर रहे हैं, तो इस टूलबार प्रविष्टि को भूरे रंग से बाहर किया जा सकता है। इसे सक्षम करने के लिए, 'टूल्स/विकल्प' पर जाएं, 'सभी सेटिंग्स दिखाएं' चेक करें, 'प्रोजेक्ट्स एंड सॉल्यूशंस' टैब का चयन करें और 'उन्नत बिल्ड कॉन्फ़िगरेशन दिखाएं' बॉक्स को चेक करें।

'कोई भी CPU' टूलबार कॉम्बो खींचें, और 'कॉन्फ़िगरेशन प्रबंधक' चुनें। 'सक्रिय समाधान मंच' कॉम्बो खोलें, '<New...>' चुनें, और 'x86' कॉन्फ़िगरेशन बनाएं।

6

मुझे एक ही त्रुटि मेरे प्रोग्राम मुख्य() की पहली पंक्ति पर दिखाई दे रही थी, जो दिन के लिए पूरी तरह से काम कर रही थी। लोडिंग असेंबली के साथ इसका कोई लेना-देना नहीं था। समस्या यह थी कि मैंने उसी यूटिलिटी क्लास के घोषणापत्र में एक स्थिर उपयोगिता वर्ग 'विधियों पर कॉल में गलती से चिपकाया था। उदाहरण:

public class Utility 
{ 
    public static int i = Utility.SomeStaticMethod(); 

    public static int SomeStaticMethod() 
    { 
     return 1; 
    } 
} 

मैं पूरी तरह क्या इसके बाद के संस्करण के लिए होता की अंदरूनी हिम्मत समझ में नहीं आता है, लेकिन मुझे पता है क्योंकि जैसे ही मैं एक Init() विधि में है कि कॉल ले जाया गया यह समस्या थी, TypeInitializationException गायब हो गया ।मेरा अनुमान है कि उपरोक्त एक कंपाइलर पीओवी से कानूनी है, रनटाइम पर इसे एक विधि का उपयोग करना पड़ा जिसे अभी तक परिभाषित नहीं किया गया था। चूंकि इसका उपयोग पूरी तरह से स्थैतिक वर्ग के रूप में किया जाता है, इसलिए वर्ग को उसी स्कोप के भीतर "प्रारंभिक" नहीं किया जाता है, लेकिन बाकी सब कुछ उन दृश्यों के पीछे शुरू होता है जहां सामान्य अपवाद प्रवाह उपलब्ध नहीं होता है।

विचार?

+0

मुझे कोडेडमोन्की के समान अपवाद मिल रहा था। आपका समाधान काम करता है। – user35443

+0

इसे आसान रखने के लिए: बग आपके कोड में है। स्थैतिक प्रारंभिकरण की शुरुआत को डीबग करें। मैंने अभी पाया है कि मैं अपने प्रारंभिकरण में क्या कर रहा हूं। जॉन के रूप में ब्लैक, सुझाव देता है, यह डिबगिंग में पहला कदम के रूप में स्थिर कन्स्ट्रक्टर में इस प्रारंभिक कोड को व्यवस्थित करने में मदद कर सकता है। – Oren

संबंधित मुद्दे