
Όταν ξεκινήσει η διαδικασία μου από το Visual Studio, είναι πάντα δημιουργούνται μέσα σε ένα αντικείμενο εργασίας. Θα ήθελα να μάθω πώς να μετατρέψει αυτήν τη συμπεριφορά off. Καμιά ιδέα?


Πιστεύω ότι δημιουργείται σε ένα αντικείμενο εργασίας πρέπει να διορθωθεί. Θέλω να τοποθετήσετε το πρόγραμμά μου σε ένα διαφορετικό αντικείμενο εργασίας.


Δεν είναι η διαδικασία της φιλοξενίας. Μιλώ για ένα [αντικείμενο εργασίας](https://msdn.microsoft.com/en-us/library/ms684161(VS.85).aspx) . Αυτό είναι ένα χωρίς έλεγχο εφαρμογής C ++.

 
Πώς να σταματήσει το Visual Studio πρόγραμμα εντοπισμού σφαλμάτων που αρχίζει η διαδικασία μου σε ένα αντικείμενο εργασίας;
===========================================================================================================================



Δεν είμαι ενήμερος για τυχόν τρόπους για να ελέγξουν αυτή την πτυχή των διαδικασιών γεννήσει για τον εντοπισμό σφαλμάτων από VS.NET. Αλλά υπάρχει μια λύση, η οποία μπορεί να εφαρμοστεί σε οποιαδήποτε κατάσταση στην οποία VS.NET δεν μπορεί ή δεν ξεκινά τη διαδικασία σας στην ακριβή τρόπο που θέλετε:


Ξεκινήστε τη διαδικασία σας (ενδεχομένως χρησιμοποιώντας ένα EXE περιτύλιγμα που λειτουργεί ως μέρος της εκδήλωσης μετά την κατασκευή), στη συνέχεια, συνδέστε στο πρόσφατα ξεκίνησε διαδικασία χρησιμοποιώντας εργαλεία / Συνδέστε με τη Μέθοδο. Αν σπάσει το πρόγραμμα εντοπισμού σφαλμάτων ως μέρος του κώδικα εκκίνησης σας, αυτό δεν θα ακόμη και να απαιτείται (και μπορείτε επίσης να ζητημάτων εκκίνησης debug ...).

 

Δεν μπορώ να αναπαράγουν αυτό που βλέπετε. Έχω δημιουργήσει ένα μη διαχειριζόμενο εφαρμογή C ++ τόσο VS 2005 και VS 2008 και δεν έχω κανένα πρόβλημα συνδέοντας αυτή τη διαδικασία σε ένα νέο αντικείμενο εργασίας κατά την έναρξη της διαδικασίας στο VS.


Είστε σίγουροι ότι το πρόγραμμα εντοπισμού σφαλμάτων το κάνει αυτό;

 

Αυτό συμβαίνει όταν `devenv.exe`ή `VSLauncher.exe`εκτέλεση σε λειτουργία συμβατότητας. Ο [Βοηθός συμβατότητας προγραμμάτων](https://msdn.microsoft.com/en-us/library/bb756937.aspx) (PCA) αποδίδει ένα αντικείμενο εργασίας στη διαδικασία Visual Studio, και κάθε διαδικασία παιδί κληρονομεί. Ελέγξτε αν το όνομα της εργασίας (όπως αναφέρθηκε από το Process Explorer) ξεκινά με **PCA** . Αν ναι, PCA μπορεί να απενεργοποιηθεί όπως περιγράφεται στο σύνδεσμο. 


Μπορείτε να απενεργοποιήσετε παγκοσμίως PCA χρησιμοποιώντας `Run`-> `gpedit.msc`-> `Administrative Templates\Windows Components\Application Compatibility`-> `Turn off Program Compatibility Assistant`-> `Enable`.


Μπορείτε να απενεργοποιήσετε το PCA για συγκεκριμένη εκτελέσιμα, προσθέτοντας μια καταχώρηση μητρώου. Για τα Windows 7, το κατάλληλο κλειδί μητρώου `HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant`. Σε regedit, κάντε δεξί κλικ σε αυτό το πλήκτρο, επιλέξτε `New`-> `Multi-String Value`, το όνομα αυτό `ExecutablesToExclude`. Ορίστε την τιμή με την πλήρη διαδρομή του `denenv.exe`και `VSLauncher.exe`, σε ξεχωριστές γραμμές και χωρίς εισαγωγικά. Για μένα, αυτά ήταν:



```
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe
C:\Program Files (x86)\Common Files\microsoft shared\MSEnv\VSLauncher.exe

```

Ένα σχετικό θέμα, στα Windows 7, είναι ότι εκτελέσιμα που χτίστηκε το Visual Studio και να τρέξει από την Εξερεύνηση (δεν το Visual Studio ή γραμμή εντολών) μπορεί να τρέξει σε λειτουργία συμβατότητας, και πάλι να πάρει τα αντικείμενα εργασίας τυλιγμένο γύρω τους. Για να αποφευχθεί αυτό, το εκτελέσιμο σας χρειάζεται μια πρόδηλη η οποία δηλώνει τη συμβατότητα με τα Windows 7, χρησιμοποιώντας τη νέα [ενότητα Εφαρμογή Manifest Συμβατότητα](https://msdn.microsoft.com/en-us/library/dd371711(VS.85).aspx) . Ο σύνδεσμος δίνει ένα παράδειγμα των Windows 7 συμβατό πρόδηλη. Η προεπιλογή δηλωτικό που παρέχεται από το Visual Studio 2010 δεν περιλαμβάνει αυτό το τμήμα συμβατότητας.

 

Είχαμε την ίδια συμπεριφορά με μια προηγούμενη έκδοση του Visual Studio. Τουλάχιστον στο VS 2017 η διαδικασία δεν αποτελεί μέρος της δουλειά πια.


IsProcessInJob αναφέρει τώρα ΛΑΘΟΣ.

 