So beenden Sie den Visual Studio-debugger starten, meinen Prozess in ein job-Objekt?
Wenn ich beginne, meinen Prozess von Visual Studio, ist es immer innerhalb eines job-Objektes. Ich möchte nicht wissen, wie man dieses Verhalten ausschalten. Irgendwelche Ideen?
Erwarte ich, dass es erstellt wird, in der ein job-Objekt getestet werden. Ich möchte meine Programm in einem anderen job-Objekt.
Es ist nicht der hosting-Prozess. Ich spreche von Job-Objekt. Dies ist eine nicht verwaltete C++ - Anwendung.
- Die job-Objekt, dass Ihr Prozess wird in der visual studio ist in. Ich weiß nicht, wie, oder wenn visual studio kann so konfiguriert werden, um zu laichen, die Ihren Prozess mit dem ERSTELLEN _ ABTRÜNNIGEN _ VON _ JOB-flag.
- Warum müssen Sie das und warum ist es nicht angemessen für das Programm selbst erkennen, wenn es nicht läuft in der richtigen "job" und brechen sich selbst?
- Sie können nicht brechen Weg von einem job, wenn der Prozess schon gestartet ist
- Wir hatten das gleiche Verhalten mit einer früheren version von Visual Studio. Zumindest in VS 2017 der Prozess ist nicht Teil des Auftrags nicht mehr. IsProcessInJob Berichte jetzt FALSCH.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies geschieht, wenn
devenv.exe
oderVSLauncher.exe
im Kompatibilitätsmodus ausführen. Die Program Compatibility Assistant (PCA), legt ein job-Objekt, um die Visual Studio-Prozess, und jedes Kind Prozess erbt es. Überprüfen Sie, ob der job-name (wie berichtet vom Prozess-Explorer) beginnt mit PCA. Wenn dem so ist, PCA kann deaktiviert werden, wie beschrieben in dem link.Können Sie Sie Global deaktivieren PCA mit
Run
->gpedit.msc
->Administrative Templates\Windows Components\Application Compatibility
->Turn off Program Compatibility Assistant
->Enable
.Können Sie deaktivieren, PCA, die für bestimmte ausführbare Dateien, indem Sie einen Registrierungseintrag hinzufügen. Für Windows 7, die entsprechenden registry-Schlüssel
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant
. In regedit mit der rechten Maustaste auf diese Taste drücken, wählen SieNew
->Multi-String Value
NamenExecutablesToExclude
. Setzen Sie den Wert auf den vollständigen Pfaddenenv.exe
undVSLauncher.exe
auf separaten Zeilen und ohne Anführungszeichen. Für mich waren diese:Einem ähnlichen Problem, unter Windows 7, ist, dass ausführbare Dateien, die Sie erstellen in Visual Studio, und führen Sie aus dem Explorer (nicht Visual Studio oder über die Kommandozeile) kann im Kompatibilitätsmodus ausführen, und wieder job bekommen, Objekte gewickelt um Sie herum. Um dies zu verhindern, Ihre ausführbaren braucht ein manifest, das erklärt die Kompatibilität mit Windows 7, mit dem neuen Anwendung Manifest-Kompatibilität § . Der link zeigt ein Beispiel eines Windows 7 kompatibel manifestieren. Die Standard-manifest von Visual Studio 2010 nicht enthalten ist das im Abschnitt "Kompatibilität".
Ich bin mir nicht bewusst alle Möglichkeiten zur Steuerung dieser Aspekt von Prozessen hervorgebracht, für das debugging VS.NET. Aber es gibt ein workaround, das gilt für jede situation, in der VS.NET nicht können oder nicht, starten Sie Ihren Prozess in der genaue Art und Weise, die Sie wollen:
Beginnen Sie Ihren Prozess (eventuell mit einem wrapper-EXE-Datei, die ausgeführt wird als Teil des post-build-event), dann befestigen Sie den neu gestarteten Prozess mit Extras/auf an den Prozess Anhängen. Wenn Sie brechen Sie in den debugger als Teil Ihrer startup-code, dieser wird gar nicht benötigt werden (Sie können auch debug-Start-Probleme...).
Kann ich nicht reproduzieren, was Sie sehen. Ich habe eine nicht verwaltete C++ - Anwendung in beiden VS 2005 und VS 2008 und ich habe keine Probleme verknüpfen, den Prozess zu einem neuen job-Objekt beim starten des Prozesses in VS.
Sind Sie sicher, dass der debugger ist, dies zu tun?