답변:
JMC (Just My Code)를 비활성화하십시오.
기본적으로 디버거는 월드 뷰를 솔루션 내에 포함 된 코드로 제한하려고합니다. 이것은 실제로는 많지만 솔루션에없는 코드를 디버깅하려면 (상황과 마찬가지로) JMC를 비활성화해야 볼 수 있습니다. 그렇지 않으면 코드는 외부 코드로 취급되며 크게보기에서 숨겨집니다.
편집하다
코드가 손상되면 다음을 시도하십시오.
경로를 가정
계획 A
C:\Projects\ProjectA
계획 B
C:\Projects\ProjectB
ProjectB의 dll은
C:\Projects\ProjectB\bin\Debug\
ProjectB
from에서 디버그하려면 ProjectA
다음을 수행하십시오.
B
의 DLL과 DLL의 .PDB
받는 사람 ProjectA
의 컴파일 디렉토리.ProjectA
. 디버깅하는 동안 dll의 메서드 나 이벤트 등을 호출해야하는 부분에 코드가 도달하면을 눌러 F11
dll의 코드로 들어갑니다.참고 : .PDB 파일을 복사하지 마십시오
두 개의 Visual Studio 인스턴스를 실행합니다. 하나는 외부 dll과 하나는 기본 응용 프로그램입니다.
외부 dll의 프로젝트 속성에서 다음을 설정하십시오.
빌드 이벤트 :
copy /y "$(TargetDir)$(TargetName).dll" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"
copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"
디버그 :
외부 프로그램을 시작하십시오 : C:\<path-to-main>\bin\debug\<AppName>.exe
작업 디렉토리 C:\<path-to-main>\bin\debug
이렇게하면 외부 dll을 빌드 할 때마다 기본 응용 프로그램 디렉토리에서 업데이트됩니다. 외부 dll의 프로젝트에서 디버그를 누르면 주 응용 프로그램이 실행되지만 디버거는 외부 dll의 중단 점에만 도달합니다. 기본 프로젝트에서 디버그를 누르면 주 응용 프로그램은 가장 최근에 빌드 된 외부 dll로 실행되지만 이제는 디버거가 기본 프로젝트의 중단 점에만 도달합니다.
한 디버거가 두 가지 작업을 모두 수행한다는 것을 알고 있지만 두 가지를이 방법으로 유지하는 것이 더 쉽다는 것을 알았습니다.
NuGet 참조
NuGet 패키지에 의해 -Project_A (project_a.dll 생성) -Project_B (project_b.dll 생성) 및 Project_B에 대한 Project_A 참조를 가정 한 다음 project_a.dll, project_a.pdb를 Project_B / Packages 폴더에 복사하십시오. 실제로는 / bin에 복사해야합니다.
이제 Project_A를 디버깅하십시오. 디버깅하는 동안 dll의 메서드 나 이벤트 등을 호출해야하는 부분에 코드가 도달하면 F11을 눌러 dll의 코드로 들어갑니다.