2011-10-18 10 views
32

प्राप्त नहीं किया है मैंने एक ऐप लिखा है जो मेरे विकास पीसी (विंडो 7) पर स्थापित और काम कर सकता है।.NET एप्लिकेशन प्रारंभ नहीं हो सकता है और XamlParseException

  • विकास पर्यावरण: विंडो 7, दोनों .NET 4 और .NET 3.5 साथ VS2010 WPF सी # स्थापित

अन्य क्लाइंट कंप्यूटर (XP SP3, 2 और 1), इसे स्थापित पर कोई त्रुटि नहीं, लेकिन शुरू नहीं कर सकता। कार्य प्रबंधक में, मैं देख सकता हूं कि एप्लिकेशन स्वयं बंद होने से पहले स्मृति को संक्षिप्त रूप से लेता है।

मैं का पालन करते हुए अपना विकसित पीसी और विभिन्न ग्राहक XP मशीनों के लिए यकीन है कि .NET 3.5 स्थिरता बनाया था:

  • आवेदन लक्ष्य .NET 3.5 (या 3.5 ग्राहकों का प्रोफाइल)
  • उपयोग तैनाती के लिए वीएस -2010 इंस्टॉलर: लक्ष्य लॉन्च हालत में .NET 3.5
  • एप्लिकेशन और इंस्टॉलर प्रोजेक्ट डीबग के दौरान .NET संगतता के बारे में कोई त्रुटि नहीं

eventvwr निम्न चेतावनी पकड़ा:

 ¬º˛¿‡–Õ: ¥ÌŒÛ 
 ¬º˛¿¥‘¥: .NET Runtime 
 ¬º˛÷÷¿‡: Œfi 
 ¬º˛ ID: 1026 
»’∆⁄:  2011-10-18 
 ¬º˛:  15:18:32 
”√ªß:  N/A 
º∆À„ª˙: WWW-9DB69D5A3AF 
√Ë ˆ: 
Application: Foo.exe 
Framework Version: v4.0.30319 
Description: ”…”⁄Œ¥æ≠¥¶¿Ìµƒ“Ï≥££¨Ω¯≥Ã÷’÷π°£ 
“Ï≥£–≈œ¢: System.Windows.Markup.XamlParseException 
∂—’ª: 
    ‘⁄ System.Windows.Markup.XamlReader.RewrapException(System.Exception, System.Xaml.IXamlLineInfo, System.Uri) 
    ‘⁄ System.Windows.Markup.WpfXamlLoader.Load(System.Xaml.XamlReader, System.Xaml.IXamlObjectWriterFactory, Boolean, System.Object, System.Xaml.XamlObjectWriterSettings, System.Uri) 
    ‘⁄ System.Windows.Markup.WpfXamlLoader.LoadBaml(System.Xaml.XamlReader, Boolean, System.Object, System.Xaml.Permissions.XamlAccessLevel, System.Uri) 
    ‘⁄ System.Windows.Markup.XamlReader.LoadBaml(System.IO.Stream, System.Windows.Markup.ParserContext, System.Object, Boolean) 
    ‘⁄ System.Windows.Application.LoadBamlStreamWithSyncInfo(System.IO.Stream, System.Windows.Markup.ParserContext) 
    ‘⁄ System.Windows.Application.LoadComponent(System.Uri, Boolean) 
    ‘⁄ System.Windows.Application.DoStartup() 
    ‘⁄ System.Windows.Application.<.ctor>b__1(System.Object) 
    ‘⁄ System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) 
    ‘⁄ MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) 
    ‘⁄ System.Windows.Threading.DispatcherOperation.InvokeImpl() 
    ‘⁄ System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object) 
    ‘⁄ System.Threading.ExecutionContext.runTryCode(System.Object) 
    ‘⁄ System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object) 
    ‘⁄ System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 
    ‘⁄ System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
    ‘⁄ System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 
    ‘⁄ System.Windows.Threading.DispatcherOperation.Invoke() 
    ‘⁄ System.Windows.Threading.Dispatcher.ProcessQueue() 
    ‘⁄ System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) 
    ‘⁄ MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) 
    ‘⁄ MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object) 
    ‘⁄ System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) 
    ‘⁄ MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) 
    ‘⁄ System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32) 
    ‘⁄ MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr) 
    ‘⁄ MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef) 
    ‘⁄ System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame) 
    ‘⁄ System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame) 
    ‘⁄ System.Windows.Threading.Dispatcher.Run() 
    ‘⁄ System.Windows.Application.RunDispatcher(System.Object) 
    ‘⁄ System.Windows.Application.RunInternal(System.Windows.Window) 
    ‘⁄ System.Windows.Application.Run(System.Windows.Window) 
    ‘⁄ System.Windows.Application.Run() 
    ‘⁄ FooSoftware.App.Main() 


”–πÿ∏¸∂‡–≈œ¢£¨«Î≤Œ‘ƒ‘⁄ http://go.microsoft.com/fwlink/events.asp µƒ∞Ô÷˙∫Õ÷ß≥÷÷––ƒ°£ 

इस XamlParseException मेरे ऐप के कारण XP विंडो मशीन पर शुरू नहीं करने के लिए नहीं था। क्या हो रहा है?

+1

आप उन मशीनों पर eventvwr जाँच था फिर से प्रयास करने से पहले ठीक उसी? – Joe

+0

@IAbstractDownvoteFactory हाँ .. कोई जानकारीपूर्ण नहीं है। – KMC

+0

मैंने eventvwr में पाया एक अपवाद के साथ अपना प्रश्न संपादित किया है, लेकिन अभी तक कोई समाधान नहीं है। – KMC

उत्तर

79

XamlParseException सामान्य त्रुटि जब वहाँ आवेदन शुरू में एक समस्या है ऐसा होता है। मेरा सुझाव है कि आप वास्तव में क्या चल रहा है और न केवल XamlParseException, बल्कि आंतरिक अपवाद भी प्राप्त करने के लिए एप्लिकेशन स्टार्टअप कोड को संशोधित करें, जो आपको समस्या की जड़ निर्धारित करने में मदद करनी चाहिए।

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for App.xaml 
    /// </summary> 
    public partial class App : Application 
    { 
     protected override void OnStartup(StartupEventArgs e) 
     { 
      // hook on error before app really starts 
      AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 
      base.OnStartup(e); 
     } 

     void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
     { 
      // put your tracing or logging code here (I put a message box as an example) 
      MessageBox.Show(e.ExceptionObject.ToString()); 
     } 
    } 
} 
+0

की तरह मिली थी, मुझे स्टैक ओवरफ्लो एक्सेप्शन मिल रहा था, कॉल को ** बेस पर हटा दिया गया। ओनस्टार्टअप (ई) ** इसे ठीक करना प्रतीत होता था। – MoMo

+0

यहां इंजेक्शन अपवाद कहां है? हम बस ExceptionObject प्राप्त कर रहे हैं जो सिर्फ एक वस्तु है। मैं इनरएक्सप्शन का पता कैसे लगा सकता हूं? – teenup

+0

@teenup - e.ExceptionObject आमतौर पर अपवाद प्रकार –

5

आमतौर पर मैं जो करता हूं वह प्रक्रियाओं के बीच लॉग फाइल डालता है, इसलिए मुझे अपने कार्यक्रम का प्रवाह पता है।

यदि यह एक कंसोल एप्लिकेशन है, तो कंसोल। राइटलाइन (कुछ स्ट्रिंग) डालें और फिर आप अपने प्रोग्राम के निष्पादन को रोकने के लिए अंत में Console.ReadLine() डाल सकते हैं।

+0

ऐप भी शुरू नहीं होता है, इसलिए मैं कुछ भी लॉग नहीं कर सकता .. – KMC

7

शुरुआत के लिए, आप वास्तव में बेहतर किस्मत अगर आप VS2010 पर बनाया गया .. होगा लेकिन वास्तव में नेट की एक कम संस्करण (3.5, या यहाँ तक 2.0) के लिए को निशाना बनाया।

यदि आप थोड़ा कोड पोस्ट करते हैं तो यह निश्चित रूप से सहायक होगा।

सुनिश्चित करें कि आपने अपने आवेदन (app.config, आदि) के लिए सभी आवश्यक फाइलों की प्रतिलिपि बनाई है।

यह लिंक समान लगता है:

.NET 4 Program written/compiled on Windows 7 machine won't run on XP

और यह इन उत्कृष्ट समस्या निवारण युक्तियों के लिए अंक: कोड और पूरे वर्गों की तर्ज बाहर टिप्पणी

Using Fusion Log Viewer

+0

धन्यवाद। मैं वीएस -2010 का उपयोग कर रहा हूं और जैसा कि आपने सुझाव दिया है, लक्षित 3.5 या 3, लेकिन कई संदर्भ जिन्हें .NET के निचले संस्करण द्वारा हल नहीं किया जा सकता है। इस मामले में, क्या इसका मतलब है कि .NET 4 को लक्षित करने के लिए लिखे गए सभी एप्लिकेशन XP SP2 या कम में उपयोग नहीं किए जा सकते हैं? – KMC

+0

नहीं, आपको नेट 4.0 को लक्षित करने की आवश्यकता नहीं है जब तक कि आपका ऐप स्पष्ट रूप से .Net 4.0 सुविधाओं का उपयोग न करे। आम तौर पर, आप आमतौर पर अधिक "पोर्टेबल" कोड लिख सकते हैं जो .NET के निम्न संस्करणों को लक्षित करता है। और हां, नेट रनटाइम * की आवश्यकता है * एक्सपी एसपी 3 या उच्चतर: http://www.microsoft.com/download/en/details.aspx?id=17113 – paulsm4

+0

बैक पोर्ट 3.5 पर। वही समस्या बनी रहती है। मुझे लगता है कि यह वीएस -2010 में एक बग हो सकता है। सुझाव के लिए – KMC

3

आरंभ/अपने कोड से तरीकों जब तक आप इसे काम नहीं करते (या सबकुछ टिप्पणी करके शुरू करें)। फिर धीरे-धीरे कोड और विधि कॉल आदि की लाइनों को शुरू करना शुरू करें जब तक कि यह टूट न जाए। यह आपको किसी विशेष कोड/कक्षा या संदर्भ का कारण बता सकता है जो समस्या पैदा कर रहा है।यह स्वीकार्य रूप से एक कठिन तरीका है, लेकिन साथ ही, काफी यांत्रिक और एक घंटे के भीतर या तो आपको अपराधी का काफी अच्छा विचार होना चाहिए।

3

मैंने सुना है कि आपके ऐप के लिए कुछ ऐसा व्यवहार करने के लिए आउटपुट फ़ाइल निष्पादित करने पर प्रभावित कुछ कोडों पर टिप्पणी की गई है। (विशेष रूप से वीएस 2010 में अन्य पुराने संस्करण में नहीं) लेकिन दूसरी तरफ, पिछले साल मैं एक कार्यक्रम पर काम कर रहा था इसमें मैंने देव घटक सूट का इस्तेमाल किया। जैसा कि आप जानते हैं कि इसकी दरार सिर्फ नेट फ्रेमवर्क 3.5 में काम करती है और मेरा प्रोग्राम प्लेटफ़ॉर्म था। नेट फ्रेमवर्क 4. आपके ऐप के लिए वही बात होती है, मेरे ऐप के कारण हुआ। मुझे अपने प्लेटफ़ॉर्म को 3.5 तक डाउनग्रेड करना था और इसका काम अच्छा था। अनुभव आपको दोस्त की मदद करता है।

मैं कुछ और कहना चाहता हूं, यह कुछ त्रुटियां CPU आर्किटेक्चर पर निर्भर नहीं हैं। इसके बारे में चिंता न करें।

शुभकामनाएं। अली फोरोई

4

हाल ही में इसी तरह की एक समस्या में आया। मेरी समस्या विंडोज 7 पर थी, मैं .ico (आइकन फाइल) का उपयोग कर रहा था। लेकिन एक्सपी पर इनके लिए कोई समर्थन नहीं है। आपके आवेदन में, यदि आप किसी भी आइकन फ़ाइलों का उपयोग कर रहे हैं, तो उन्हें हटाने का प्रयास करें .. देखें कि यह जारी करने का हल करता है या नहीं।

+0

धन्यवाद। हालांकि, मेरे ऐप पर सभी आइकनों को हटाने और हटाने के बाद, वही समस्या बनी रहती है - यह शुरू नहीं होती है और कोई त्रुटि या क्रैश नहीं उठाया जाता है। – KMC

+0

क्या आपके पास विजुअल स्टूडियो स्थापित के साथ एक एक्सपी सिस्टम (वर्चुअल sys की तरह) है? यदि ऐसा है, तो वहां डीबग करने का प्रयास करें। चूंकि आप XP मशीन पर .exe चला रहे हैं, अपवाद देखना मुश्किल है। लेकिन वीएस पर डिबगिंग के साथ, आपको सही समस्या दिखाई देगी। आइकन समस्या – katie77

6

आप रिमोट डीबग कर सकते हैं। असल में यह लक्ष्य मशीन पर रिमोट डीबग सर्वर स्थापित करके किया जाता है, फिर जब आप एप्लिकेशन प्रारंभ करते हैं तो इसे अपने विजुअल स्टूडियो से संलग्न करें। कुछ और अधिक जानकारी यहां पाया जा सकता: http://msdn.microsoft.com/en-us/library/bt727f1t.aspx और वहाँ कुछ हद तक एक बुजुर्ग यहाँ ट्यूटोरियल है: http://www.cprogramming.com/tutorial/visual_studio_remote_debugging.html

कृपया ध्यान दें कि आप डिबग प्रतीकों (PDBs) के साथ परिनियोजन करना होगा और सॉफ्टवेयर डिबग कि अपने कोड में है एक ही संस्करण में होना चाहिए ।

3

"TryCathcWhen" से संबंधित लाइन मुझे स्टार्टअप पर कुछ बिना क्रिया का अपवाद, या एक अपवाद स्टार्टअप पर कैच ब्लॉक में फेंक दिया जा रहा है के बारे में सोचते हैं: यहाँ एक उदाहरण है।

अपना स्टार्टअप कोड देखना उपयोगी होगा।

1

मैंने यह मशीनों पर ऐसा देखा है जहां .NET 3.5/4 की स्थापना विफल/सफल नहीं हुई थी। हालांकि, यह भी बेहद असंभव है।

आप मशीन (काफी आसान प्रक्रिया) और फिर दृश्य स्टूडियो में लक्ष्य के रूप में रिमोट मशीन की स्थापना पर दूरस्थ डीबगिंग स्थापित करने का प्रयास करना चाहिए, डिबग मोड में कार्यक्रम चलाते हैं। कार्यक्रम तब रिमोट मशीन पर लॉन्च होगा और आपको विजुअल स्टूडियो के भीतर पूर्ण त्रुटि मिलेगी।

6

हालांकि आप .NET 3.5 को लक्षित कर रहे थे, आपकी क्लाइंट टोपी .NET 4 स्थापित और इसका उपयोग किया गया। स्ट्रिंग

Framework Version: v4.0.30319 

मुझे यह बताता है। वास्तव में आप अपने आवेदन के लिए एक App.config जोड़ सकते हैं और जोड़ना चाहिए .NET 3.5 उपयोग करने के लिए अपने ग्राहक के लिए मजबूर करने के लिए:

<configuration> 
    <startup> 
     <supportedRuntime version="v2.0.50727"/> 
    </startup> 
</configuration> 

यह हो सकता है कि आप एक अपवाद हो रही है क्योंकि एक अलग तरीके से अपने XAML .NET 4 व्यवहार करता है। क्या आपने अपने आवेदन को .NET 4 के तहत चलाने की कोशिश की? यदि आपके पास कोई ऐप नहीं है।कॉन्फ़िगर किया गया है कि आपने .NET Framework 4 के साथ अपने एप्लिकेशन का परीक्षण किया है, हालांकि आपने .NET Framework 3.5 को लक्षित किया है। यदि आपका ग्राहक पर्याप्त अच्छा है तो आप उसे डंप फ़ाइल बनाने दे सकते हैं ताकि आपके पास इसे सीधे डीबग करने का एक आसान तरीका हो। SysInternals टूल सूट से Procdump डाउनलोड करें और अपने क्लाइंट को अपने एप्लिकेशन के साथ भेजें। उसे अमल

procdump -ma -e -t -x foo.exe %temp%\dump.dmp 

यह जब प्रक्रिया% TEMP% निर्देशिका में समाप्त हो जाता है हर बिना क्रिया का अपवाद के लिए एक पूर्ण प्रक्रिया डंप और एक दूसरी बना रहेगा। विजुअल स्टूडियो 2010 काफी बेहतर डंप विश्लेषण समर्थन मिल गया है ताकि आप उस मदद नहीं करता है, तो आप Windbg डाउनलोड कर सकते हैं दृश्य स्टूडियो 2010 भीतर यह विश्लेषण करने के लिए सक्षम होना चाहिए (32 बिट here), डंप लोड और टाइप

! विश्लेषण -v

यह देखने के लिए कि अंतिम अपवाद क्या था। यह ट्रिक काम आना चाहिए। प्रबंधित एक्सटेंशन के साथ right debugging dll (.NET 2,3,3.5 के लिए sos.dll, और .NET 4 के लिए clr.dll लोड करने के लिए प्रबंधित एक्सटेंशन के साथ समस्या हो सकती है) लेकिन यहां बहुत सारे ट्यूटोरियल हैं जो इसे कैसे करें। इसके अलावा मैं आपके आवेदन में अपवाद हैंडलर जोड़ने की सलाह दूंगा ताकि जब आपका एप्लिकेशन अप्रत्याशित तरीके से समाप्त हो जाए तो आपको एक अच्छी लॉग फ़ाइल मिल जाएगी।

उत्पादन सही ढेर आप ! ClrStack और ! का उपयोग shold के लिए नेतृत्व नहीं किया, तो धागे पता लगाने के लिए जो धागे उनके ढेर पर अपवाद होते हैं।

+0

अगर मैं कर सकता तो मैं इसे एक से अधिक बार ऊपर उठाऊंगा। बहुत ही रोचक। – Alex

1

मेरे पास एक .Net 2.0 ऐप था जो डिबगिंग के साथ काम करता था लेकिन रिलीज बिल्ड में नहीं (इंस्टॉल करने के बाद)। मुझे सीधे मेरे आवेदन से कोई लॉगिंग नहीं मिल रही थी, मेरी त्रुटियां सीधे .NET से आईं। मुद्दा यह था कि मैंने मुख्य रूप से एक स्थिर शून्य MAIN() के साथ अपना खुद का प्रोग्राम क्लास बनाया था, मेरे पास try...catch..finally ब्लॉक था। किसी कारण से .NET finally पर चकित कर रहा था। क्या आपके पास अपने कार्यक्रम में ऐसा कुछ है?

0

यह वास्तव में एक सामान्य त्रुटि है। मेरे मामले में ताज़ा स्थापित एप्लिकेशन अपर्याप्त अनुमतियों के कारण अपना स्वयं का ईवेंट स्रोत बनाने में विफल रहा। ऐप को "व्यवस्थापक के रूप में" मोड में एक बार चलाकर हल किया गया (बदसूरत एक)। सुनिश्चित करें कि सभी आंतरिक अपवादों को संभाला जाता है। घटनाक्रम भी जानकारी का एक अच्छा स्रोत है।

0

मेरे मामले में, समस्या हल हो जब उपयोगकर्ता एक ही नेट परिवार कल्याण संस्करण है कि मैं के लिए विकसित कर रहा था स्थापित किया। (मेरे पास एफडब्ल्यू 4.5.1 है और उपयोगकर्ता के पास एफडब्ल्यू 4.0 था)।

तो, जाँच परिवार कल्याण संस्करण:

http://msdn.microsoft.com/library/hh925568(v=vs.110).aspx

और स्थापित निष्पादित करने के लिए

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