Jak włączyć edytowanie plików w trybie debugowania programu Visual Studio?


144

Czy istnieje sposób na włączenie edycji plików podczas debugowania w programie Visual Studio? Odznaczono pole wyboru „Wymagaj, aby plik źródłowy dokładnie odpowiadał wersji oryginalnej”. To nie robi różnicy. Muszę przerwać debugowanie, aby edytować pliki. Bardzo irytujące. Włączyłem Edytuj i Kontynuuj. Ten sam wynik. Wyłączyłem opcję Edytuj i Kontynuuj - ten sam wynik.


Nie widziałem, że zredagowałeś swoje pytanie. Możesz to naprawić za pomocą szybkiej ponownej instalacji.
Secko

12
@Secko Nie ma czegoś takiego jak „szybka ponowna instalacja”, kiedy mówimy o Visual Studio ...
Zero3

@ Zero3 Był w moim czasie, około 16 lat temu, kiedy używałem go około (int) 1999 - (int) 2000. Nie używałem go od (długiego) * czasu.
Secko,

Prawdziwy problem polega na tym, że ustawienie „Edytuj i kontynuuj” programu Visual Studio nie umożliwia edytowania i kontynuowania . Jest to raczej dziwna funkcja, która pozwala edytować kod, a następnie faktycznie zmienia kod wykonawczy, aby pasował do edycji, i debuguje stamtąd. Nawet jeśli to było przydatne, rzadko działa. Powinien nazywać się czymś w stylu „edytuj i rekompiluj w locie”. Wyłączenie go umożliwia rzeczywistą edycję kodu, a jednocześnie debugowanie skompilowanego kodu.
MGOwen

Odpowiedzi:


234

O ile wiem, możesz odznaczyć pole wyboru „Edytuj i kontynuuj”.

Narzędzia -> Opcje -> Debugowanie -> Edytuj i kontynuuj> Włącz edycję i kontynuuj (odznacz)


60
To było dla mnie rozwiązanie - nie mam pojęcia, dlaczego zaznaczenie opcji „Edytuj i kontynuuj” przez ONZ umożliwiło mi edycję ... wydaje się sprzeczne z intuicją. W każdym razie zaznaczyłbym to jako odpowiedź.
Sam Schutte

7
Nieintuicyjny, ale skuteczny.
Milne

2
To reaguje inaczej, jeśli warstwa biznesowa jest podzielona na oddzielny projekt w ramach rozwiązania. Przed podziałem mogłem bez problemu edytować klasy podczas debugowania. Niestety to rozwiązanie nie rozwiązało dla mnie w tej sytuacji (używam VS2013)
Radderz

18
W programie Visual Studio 2015 znalazłem to ustawienie na dole Debugging-> General.
Zero3

13
Jeśli próbujesz to zrobić, ale opcja „Włącz edycję i kontynuuj” jest wyszarzona, po prostu zatrzymaj debugowanie i wróć do opcji.
Ravvy

19

Rozwinięcie poprawnej odpowiedzi Reeda.

Podczas edycji pliku w trybie debugowania używana jest funkcja zwana Edytuj i Kontynuuj (powszechnie w skrócie ENC). Pozwala to użytkownikom na zmianę programu w trakcie jego działania w debugerze.

Gdy ENC jest włączone, użytkownicy mogą dokonywać ograniczonego zestawu zmian w swoim pliku. Następna czynność, która kontynuuje wykonywanie programu (F10, F5 itd.), Spowoduje zastosowanie edycji do uruchomionego programu. Jeśli to się powiedzie, program będzie kontynuowany z zastosowanym nowym kodem.

Debugger nie zezwala na edycję pliku, jeśli ENC nie jest włączone.

Istnieje kilka powodów, dla których ENC może być wyłączone na twoim komputerze

  • Niektóre profile nie włączają domyślnie ENC i musi być jawnie włączone
  • Być może korzystasz z 64-bitowego systemu operacyjnego i Twoja aplikacja .Net jest ustawiona na „Dowolny procesor”. ENC nie jest dostępne w wersji 64-bitowej (ograniczenie CLR). Będziesz musiał ustawić aplikację z powrotem na x86, aby ENC działało

8
A co, jeśli nie obchodzi Cię Edycja i Kontynuuj i chcesz po prostu kodować, gdy aplikacja jest uruchomiona, aby zobaczyć, co należy zrobić, gdy to robisz? To absolutnie nierealne, VS narzuciłby to sztuczne ograniczenie. To nie jest tak, że musi czytać pliki źródłowe, gdy jest uruchomiony. Nie ma technicznego powodu, dla którego miałby blokować pliki źródłowe. Xcode nie ma problemu z zezwalaniem na kodowanie, gdy aplikacja jest uruchomiona. Zmiany po prostu nie mają zastosowania do następnego uruchomienia. Czy naprawdę nie ma sposobu, aby to zrobić w VS?
devios1

1
Gdybym wyłączyć Edycja i dalej to niech mi edytować pliki .cs gdy aplikacja jest uruchomiona, ale nadal blokuje pliki .xaml. Szukam sposobu na całkowite wyłączenie tego absurdalnego blokowania.
devios1

7
Nie pozwala mi nawet dodać pliku do projektu, gdy aplikacja jest uruchomiona! Nie żartuję, 20-30 razy dziennie próbuję coś zrobić, a VS całkowicie temu zapobiega. Po krótkiej chwili „wtf” zdaję sobie sprawę, że aplikacja debuguje i muszę przerwać to, co robiłem, zabić aplikację, a następnie spróbować ponownie. Nie mogę pracować w takich warunkach i jestem naprawdę zdumiony, że ludzie nie mają w tej sprawie broni. To naprawdę zabija moją produktywność i prowadzi mnie do ściany. Musi być sposób, aby to naprawić!
devios1

1
@ devios1 Coś, co często robię, to po prostu uruchamianie bez debugowania (ctrl + f5), co jest w porządku, o ile nie potrzebujesz punktów przerwania ani niczego.
binki

@ devios1 To samo. Mam nadzieję, że ktoś (może ja) znajdzie czas na dokończenie tego rozszerzenia. github.com/AndreasFurster/pause-edit-and-continue
Paul

8
  • UN zaznacz „Włącz edycję i kontynuuj” ( Tools -> Options -> Debugging -> Edit and Continue > Enable Edit and Continue)
  • Zbuduj swoją aplikację.
  • Uruchom.
  • Przestań.
  • RE zaznacz „Włącz edycję i kontynuuj”.
  • Zbuduj swoją aplikację.
  • Uruchom.
  • Spróbuj teraz edytować pliki podczas debugowania.

To zadziałało dla mnie. Myślę, że może to być jakiś błąd lub problem z synchronizacją w programie Visual Studio 2015.


1
Drogi przeciwniku, dobrą praktyką jest pozostawienie komentarza, DLACZEGO odrzucasz odpowiedź.
Francois Botha,

Nie rozwiązało to dla mnie problemu, jednak odpowiedź z najwyższą liczbą głosów poniżej tak.
Kairan

6

Musisz włączyć opcję Edytuj i kontynuuj .


2
Ponadto musisz być w punkcie przerwania lub kliknąć przycisk wstrzymania (Przerwij wszystko).
McAden

@marcc: I wiele innych rzeczy, dlatego wskazałem na dokumenty. Pełną listę nieobsługiwanych zmian można znaleźć w sekcji „Nieobsługiwane scenariusze” w tej lokalizacji: msdn.microsoft.com/en-us/library/ms164927%28VS.80%29.aspx
Reed Copsey,

4
Odpowiedź Seckos (najlepiej oceniana) zadziałała dla mnie (VS2015) i jest dokładnym przeciwieństwem Twojej odpowiedzi.
alrts

6

Z MSDN

Aby włączyć / wyłączyć Edytuj i Kontynuuj

  • Otwórz stronę opcji debugowania (Narzędzia / Opcje / Debugowanie). Zwój

  • w dół do kategorii Edytuj i kontynuuj. Aby włączyć, wybierz opcję Włącz edycję

  • i Kontynuuj. Aby wyłączyć, usuń zaznaczenie pola wyboru. Uwaga. ...

  • Kliknij OK.


5

zwykle edycja pliku podczas debugowania jest możliwa po osiągnięciu punktu przerwania (i tylko wtedy).

Istnieją jednak pewne ograniczenia: -nowy kod musi się skompilować -nie można zmienić kodu w funkcji zawierającej wyrażenia lambda



2

Jeśli masz włączoną opcję Edytuj i Kontynuuj i używasz języka C #, możesz edytować plik tylko wtedy, gdy debugger zatrzymał się za pośrednictwem punktu przerwania lub ręcznie włamujesz się do aplikacji za pomocą opcji „Przerwij wszystko”. Nadal nie będziesz mógł edytować niektórych plików, np. xaml w aplikacji WPF, ale powinno rozwiązać większość problemów.


1

Jeśli źródło pochodzi z zdekompilowanej biblioteki dll, pamiętaj, że dekompilatory mogą dodać instrukcję IgnoreSymbolStoreSequencePoints do assemblyinfo.cs:

[zespół: Debuggable (DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

Ta linia musi zostać usunięta, aby załadować plik pdb, edytując i kontynuując pracę.


1

Usunięcie zaznaczenia poniżej opcji działa dla mnie

Narzędzia> Opcja> Debugowanie> Ogólne> Włącz edycję i kontynuuj

wprowadź opis obrazu tutaj

* Uwaga: w systemie innych programistów dodanie tego zaznaczenia wykonało tę sztuczkę.


1

Próbowałem w ten sposób i to działa dla mnie. Przejdź do pliku CSProj lub VbProj -> wybierz Asp.Net Development Server / IIS Express -> Debuggery -> Włącz edycję i kontynuuj -> Zapisz i uruchom.

wprowadź opis obrazu tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.