2

Ich bin für Tipps für diejenigen, die für Windows XP embedded in Visual Studio2013 zu entwickeln, debuggen dann in Visual Studio 2010.Best Practices Remote VS2010 unter VS2013 Debuggen mit

Die Gründe dafür sind in diesem Stack Overflow Link diskutiert zum Thema.

Im Wesentlichen das Remote-Debug-Protokoll nach VS2010 geändert, und die neue msvsmon.exe, die das neue VS2013-Protokoll verwendet, unterstützt nicht XP Embedded Debugging. Also werden wir in eine TWO IDE-Lösung gezwungen, eine für Builds, eine andere für Debug. VS2013 wird für Builds verwendet und VS2010 wird zum Starten von Remote-Debugsitzungen verwendet.

Es gibt einige Fehlinformationen über die Anforderung, VS2013 und VS2010 zu kaufen. Aus dem oben erwähnten Link ist ersichtlich, dass es möglich ist, die Debugging-Umgebung VS2010 kostenlos zu erhalten. Ich konnte den kostenlosen Download der Komponenten überprüfen, hatte aber noch keine Zeit zu überprüfen, ob die Debug-Umgebung funktioniert. Die von mir verwendete Umgebung besteht aus einer lizenzierten Kopie von VS2013 und einer lizenzierten Kopie von VS2010.

Hier sind zwei anfängliche Probleme, die ich nicht tun Remote-Debug in der ehemaligen VS6 msvsmon.exe Umgebung gesehen: Projekte

1) Mit VS2013 bauen, VS2010 will nicht die * SLN-Datei öffnen. Wenn ich das VS6 .dsp/.dsw öffne, portierte ich von VS2010 eine "EINZELTE KONVERTIERUNG", die mein painstaken gebautes VS2013 Bauprojekt zerstört. Es sieht so aus, als müsste ich ZWEI verschiedene Lösungsräume erstellen, einen namens SOLUTION_NAME_VS2013 und einen weiteren SOLUTION_NAME_VS2010. Ich bin interessiert zu wissen, ob es eine elegantere Lösung gibt, 1 BUILD-Dateisatz mit zwei verschiedenen "Highlander" (es gibt nur einen) IDEs zu verwalten.

2) Wenn das Projekt remote gestartet wird, bekomme ich eines dieser lästigen "Dein Programm ist abgestürzt" -Dialoge auf dem Win2012 Debug-Host (läuft VS2010), der das Absturzsignal vom Debugger abfängt. Ungefähr 30% der Zeit erkennt es die laufende Instanz von VS2010, 70% der Zeit nicht. CrashDialog

3) msvmon mal aus (Bedarf neu zu starten) und erfordert zusätzliche Zeit/Mausklicks Setup über die alten VS6 Msvcmon.exe

Ich frage mich, wenn andere Windows Embedded Entwickler elegante Lösungen für diese entdeckt haben Probleme. Ich poste, was ich hier finde, wenn ich weitere Tipps finde, die sich vorwärts bewegen.


+0

Ändern Sie die ToolsVersion in der .vxproj-XML-Datei, sodass ein in VS2013 erstelltes Projekt in VS2010 gelesen und ausgeführt werden kann. Suchen Sie nach: Ändern Sie zu:

+0

Vorschlag: Wenn der zweite Teil Ihrer Frage tatsächlich ein Duplikat von http://stackoverflow.com/questions/396369/ how-do-i-deaktivieren-the-debug-close-application-dialog-auf-windows-vista, warum nicht das Teil vollständig entfernen? Dann kann sich die Frage auf den ersten Teil konzentrieren: "Wie kann man sowohl in VS2013 als auch VS2010 mit einer Lösung debuggen?". Dann kann jemand eine Community-Wiki-Antwort erstellen, um die Lösung aus Ihrer Frage herauszuholen. Das würde deine Post sehr aufräumen. – BSMP

+0

Es ist nicht ideal, einen Beitrag wie diesen zu hinterlassen, deshalb werde ich ihn in der Hoffnung aufwerten, dass Sie eine Antwort erstellen können. (Ich habe nicht genügend Wissen, um zu wissen, ob die beiden Fragen, die Sie gestellt haben, in derselben Frage stehen, aber im Allgemeinen ist es eine gute Idee, mehrere Fragen in mehreren Beiträgen zu stellen, um das zu vermeiden geschlossen als zu lokal/breit). – halfer

Antwort

1

Für Issue # 1: kann nicht VS2013 * SLN-Datei in VS2010 lesen.

Das Problem war, dass die VERSION von Visual Studio 2010 mindestens SERVICE PACK1 sein muss. Frühere Versionen von Visual Studio 2010 können die VS2012/VS2013/VS2015-Lösungsdateien nicht lesen.

Screenshot of Working vs non Working VS2010

Für Issue # 2: Ihr Programm hat erreicht Debugger Dialog verhindert Signale abgestürzt.

Diese Stack Overflow link war hilfreich. Es gibt mehrere Möglichkeiten, den Dialog "Ihr Programm ist abgestürzt" zu unterdrücken. In meinem Fall müssen Benutzer möglicherweise neue Anwendungen in einem Produktionssystem debuggen. Daher ist es nicht ideal, die Einstellung global zu ändern.

Ich wähle die Lösung von this Raymond Chen link ermöglicht es mir, das Dialogfeld auf einer Anwendung nach Anwendung zu deaktivieren. Da ich normalerweise Zugriff auf Quellcode habe, debugge ich das war die beste Lösung für mich.

DWORD dwMode = SetErrorMode(SEM_NOGPFAULTERRORBOX); 
SetErrorMode(dwMode | SEM_NOGPFAULTERRORBOX); 

Ich sehe immer noch ein Problem mit der Windows-Laufzeitumgebung, die die laufende Debugger-Instanz bei einem Absturz nicht sehen kann und eine neue starten möchte. Dies scheint ~ 30% der Zeit zu passieren. Wenn ich herausfinde, was das verursacht, werde ich es hier aktualisieren.

Schließlich wurde der neue Remote Debug-Client in msvmon.exe geändert, die die Sicherheit verbessert hat. Um die zusätzlichen Mausklicks zu speichern, ist der folgende Befehl nützlich auf dem Remote-Windows Embedded XP-Client ausführen:

"Path\to\msvsmon.exe" /anyuser /noauth /nosecuritywarn /timeout:2147483646 

Die /noauth und /anyuser/nosecuritywarn erfordern. /timeout max value verhindert, dass der Debugger-Client nach ca. einer Stunde Leerlaufzeit beendet wird. Wenn Sie Ihren Arbeitstag mit Debuggen verbringen wollen, wollen Sie nicht, dass es nach einem Kaffee ausbricht/alle Unterbrechungen wieder herstellt.