Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Överblick
Ibland fastnar vi alla när vi arbetar med ett projekt, antingen på oförmågan att få ett API att fungera som vi vill eller när vi försöker kringgå en bugg. Vårt mål på Xamarin är att du ska kunna skriva dina mobil- och skrivbordsprogram, och vi har gett några resurser att hjälpa till med.
Med någon av dessa resurser finns det några förberedelsesteg som du kan vidta för att hjälpa dem att lösa problemet snabbt:
Identifiera grundorsaken till problemet så noggrant som möjligt för att rapportera krascher.
"Mitt program kraschar" är svårt att diagnostisera. "Mitt program kraschar när jag returnerar en tom matris till det här anropet, vilket är mycket lättare att åtgärda."
"Jag kan inte få NSTable att fungera" är mindre användbart än "Ingen av metoderna på min NSTableDelegate verkar anropas i det här fallet."
Ange om möjligt ett litet exempelprogram som visar problemet. Att gräva igenom sidor med källkod som letar efter problemet tar mer tid och ansträngning.
Om du vet vilka ändringar du har gjort i ditt program för att orsaka att ett problem visas kan du snabbt begränsa orsaken till problemet. Observera att om du nyligen har uppgraderat versioner av Xamarin.Mac kan det vara till stor hjälp att trimma ut delar av programmet för att hitta den del som orsakar problemet eller testa tidigare versioner för att hitta den ändring som introducerade problemet.
Vad du ska göra när din app kraschar utan utdata
I de flesta fall fångar felsökaren i Visual Studio för Mac undantag och kraschar i ditt program och hjälper dig att spåra rotorsaken. Det finns dock vissa fall där programmet studsar på dockan och sedan avslutas med lite eller inga utdata. Dessa kan vara:
- Problem med kodsignering.
- Vissa Mono-runtime kraschade.
- Vissa Objective-c-undantag och krascher.
- Vissa kraschar mycket tidigt i processens livscykel.
- Vissa stacköverflöden.
- MacOS-versionen som anges i din Info.plist är nyare än den macOS-version du har installerat eller är ogiltig.
Det kan vara frustrerande att felsöka dessa program, eftersom det kan vara svårt att hitta den information som behövs. Här följer några metoder som kan vara till hjälp:
Kontrollera att macOS-versionen som anges i Info.plist är samma som den version av macOS som för närvarande är installerad på datorn.
Kontrollera Visual Studio för Mac-programutdata (View –>Pads –>Application Output) för stackspår eller utdata i rött från Cocoa som kan förklara utdata.
Kör programmet från kommandoraden och titta på utdata (i appen Terminal) med hjälp av:
MyApp.app/Contents/MacOS/MyApp(därMyAppär namnet på ditt program)Du kan öka utdata genom att lägga till "MONO_LOG_LEVEL" i kommandot på kommandoraden, till exempel:
MONO_LOG_LEVEL=debug MyApp.app/Contents/MacOS/MyAppDu kan koppla ett internt felsökningsprogram (
lldb) till din process för att se om det ger mer information (detta kräver en betald licens). Gör till exempel följande:- Ange
lldb MyApp.app/Contents/MacOS/MyAppi terminalen. - Ange
runi terminalen. - Ange
ci terminalen. - Avsluta när felsökningen är klar.
- Ange
Innan du anropar
NSApplication.Initi dinMain-metod (eller på andra platser efter behov) kan du som sista utväg skriva text till en fil på en känd plats för att spåra vid vilket startsteg du stöter på problem.
Kända problem
Följande avsnitt beskriver kända problem och deras lösningar.
Det går inte att ansluta till felsökningsprogrammet i sandbox-appar
Felsökningsprogrammet ansluter till Xamarin.Mac-appar via TCP, vilket innebär att det som standard när du aktiverar sandbox-miljö inte kan ansluta till appen, så om du försöker köra appen utan rätt behörigheter aktiverade får du ett fel "Det går inte att ansluta till felsökningsprogrammet".
Behörigheten Tillåt utgående nätverksanslutningar (klient) är den som krävs för felsökningsprogrammet. Om du aktiverar det här alternativet kan du felsöka normalt. Eftersom felsökning inte är möjlig utan det, har vi uppdaterat CompileEntitlements-målet för msbuild för att automatiskt lägga till den behörigheten i entitlements för alla appar som är sandboxade och endast avsedda för felsökningsbyggen. Versionsversioner bör använda de rättigheter som anges i rättighetsfilen, oförändrade.
System.NotSupportedException: inga data är tillgängliga för kodning 437
När du inkluderar bibliotek från tredje part i Xamarin.Mac-appen kan du få ett fel i formuläret "System.NotSupportedException: Inga data är tillgängliga för kodning av 437" när du försöker kompilera och köra appen. Bibliotek, såsom Ionic.Zip.ZipFile, kan utlösa det här undantaget under drift.
Detta kan lösas genom att öppna alternativen för Xamarin.Mac-projektet, gå till Mac Build>Internationalization och kontrollera internationaliseringen West:
Det gick inte att kompilera (mm5103)
Det här felet orsakas vanligtvis när en ny version av Xcode släpps och du har installerat den nya versionen men ännu inte kört den. Innan du försöker kompilera med en ny version av Xcode måste du först köra den versionen minst en gång.
Första gången du kör en ny version av Xcode installeras flera kommandoradsverktyg som krävs av Xamarin.Mac. Dessutom bör du göra en ren version när du har uppdaterat Xcode eller din Xamarin.Mac-version.
Om du inte kan lösa det här problemet, vänligen skapa en felrapport.
Berättiganden saknas.plist
Den senaste versionen av Visual Studio för Mac har tagit bort avsnittet Berättiganden från Info.plist-redigeraren och placerat den i separat Entitlements.plist-redigeraren (för bättre plattformsoberoende stöd med Xamarin.iOS).
När du skapar ett nytt Xamarin.Mac-appprojekt med det nya Visual Studio för Mac installerat läggs en Entitlements.plist-fil automatiskt till i projektträdet:
Om du dubbelklickar på filen Entitlements.plist visas berättiganderedigeraren:
För befintliga Xamarin.Mac-projekt måste du manuellt skapa filen Entitlements.plist genom att högerklicka på projektet i Solution Pad och välja Lägg till>ny fil.... Välj sedan Xamarin.Mac>tom egenskapslista:
Ange Entitlements som namn och klicka på knappen Nytt. Om projektet tidigare innehöll en rättighetsfil uppmanas du att lägga till den i projektet i stället för att skapa en ny fil:
Community-stöd på forumen
Communityn med utvecklare som använder Xamarin-produkter är fantastisk och många besöker våra Xamarin.Mac-forum för att dela erfarenheter och deras expertis. Dessutom besöker Xamarin-tekniker regelbundet forumet för att hjälpa till.
Skicka in en bugg
Din feedback är viktig för oss. Om du hittar några problem med Xamarin.Mac:
- Sök i ärendehanteringssystemet
- Om du inte hittar ett matchande problem kan du ange ett nytt problem på GitHub-lagringsplatsen.
GitHub-problem är alla offentliga. Det går inte att dölja kommentarer eller bifogade filer.
Inkludera så mycket av följande som möjligt:
- Ett enkelt exempel som återskapar problemet. Det här är ovärderligt där det är möjligt.
- Den fullständiga stackspårningen av kraschen.
- C#-koden som omger kraschen.