Visual Studio 확장을 디버깅하는 방법


93

Visual Studio 2010 용 VSIX 확장을 작성 중이며 디버깅 방법을 알 수 없습니다.

한 가지 분명한 방법은 메시지를 출력하는 것입니다. 확장 템플릿은 Trace.WriteLine(). 그러나 어디에서 출력을 찾을 수 있습니까?

답변:


184

Visual Studio 확장은 다른 애플리케이션과 마찬가지로 디버깅 할 수 있습니다. 로드 된 확장으로 devenv를 시작하려면 디버그 환경을 설정하기 만하면됩니다. 다음을 시도하십시오

  • 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오.
  • 디버그 탭으로 이동

에 대한 라디오 버튼을 클릭합니다 Start External Program. devenv.exe 바이너리를 가리 킵니다. 내 컴퓨터에서

C : \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe

x64가 아닌 시스템에서는 "(x86)"부분을 제거 할 수 있습니다.

그런 다음 명령 줄 인수를 /rootsuffix Exp. 그러면 Visual Studio가 일반 구성 하이브 대신 실험적 하이브를 사용하도록 지시합니다. 빌드시 기본적으로 VSIX 확장은 실험적 하이브에 등록됩니다.

이제 F5를 할 수 있으며 VSIX를 사용 가능한 확장으로 사용하여 Visual Studio를 시작합니다.


이 답변에 감사 드리며 한 번에 문제를 해결했습니다. 감사합니다!
Richard Griffiths

@JaredPar-vs2015 미리보기의 실험적 하이브에 등록하도록 vs2012 확장을 지시하는 방법이 있습니까?
Srikanth Venugopalan

1
디버그 및 테스트에 사용하는 버전이 동일한 경우에만 작동하는 것 같습니다. 당신은하지 2013 년 디버그 및 2015 @SrikanthVenugopalan의 확장 실행할 수 있도록
마리아 이네스 Parnisari

@miparnisari-네, 그렇습니다. 하지만 여러 버전을 지원하는 경우 약간의 고통입니다.
Srikanth Venugopalan

2
안녕하세요, 내 VSIX를 "사용 가능한 확장"으로 사용하여 VS를 시작한다는 것은 무엇을 의미합니까? 사용 가능한 확장은 어디에서 찾을 수 있습니까? 도구-> 확장 및 업데이트로 이동하면 "설치됨", "온라인"및 "업데이트"만 표시됩니다.
pabrams

54

@JaredPar가 허용하는 대답은 기술적으로 정확하지만 모든 개발자, 코드의 새 복사본을 얻을 때마다, csproj.user파일이 삭제 될 때마다 다시 실행해야한다는 사실로 인해 어려움을 겪습니다 . 그렇게하면 설정이 csproj.user파일에 저장 됩니다.

더 나은 옵션은 설정 csproj이 손실되지 않도록 파일에 저장하는 것입니다. 불행히도 Visual Studio에서는이 작업을 자동으로 수행 할 수 없으므로 수동으로 설정을 추가해야합니다. 다행히 설정은 모든 프로젝트에서 동일합니다.

프로젝트를 마우스 오른쪽 버튼으로 클릭하고 언로드 한 다음 다시 마우스 오른쪽 버튼을 클릭하고 csproj프로젝트 파일 파일을 편집 합니다. XML에서 첫 번째에 다음을 추가합니다 ( PropertyGroup예 : TargetFramework.

<StartAction>Program</StartAction>
<StartProgram>$(DevEnvDir)\devenv.exe</StartProgram>
<StartArguments>/rootsuffix Exp</StartArguments>

이것은 다음과 같은 장점이 있습니다.

  • 디버그 및 릴리스를 위해 설정합니다.
  • 현재 실행중인 모든 버전의 Visual Studio를 실행합니다.
  • 소스 제어에 체크인되므로 모든 개발자가 수행 방법을 기억할 필요가 없습니다. :)

@MBulli가 주석에 언급했듯이 수락 된 답변을 변경 한 경우 *.csproj.user파일의 설정이 기본 csproj파일에 추가 한 설정보다 우선하므로 파일을 삭제하십시오 .


6
사용자 설정이 프로젝트 설정보다 우선하므로 * .csproj.user 파일을 삭제해야합니다.
MBulli

감사합니다. 허용되는 것보다 훨씬 효율적입니다.
Zverev Evgeniy

2019 년 대비 완벽하게 작동
x0n

2

OutputWindowHelper.OutputString의 '일반'출력 창 창 (Ctrl 키를 대체 O)에 대한 방법 쓰기. 나는 VS 2013에서 이것을 얻기 위해 .csproj 참조 에이 줄을 추가했습니다.

<Reference Include="Microsoft.VisualStudio.Services.Integration, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

또한 이 답변을 참조하십시오 .


참고 Visual Studio 2015에는 OutputWindowHelper가 없습니다. VS2015 만있는 컴퓨터는 호출되면 오류가 발생합니다. 참조 : github.com/landofjoe/NuspecPackager/issues/1
Quango

0

UnitTestExtension을 디버깅하려는 경우 여기에 설명 된 것과 같은 vstest. *. exe 프로세스에도 디버거를 연결해야 합니다 . 그렇지 않으면 활성화 중단 점이 표시 될 수 있지만 디버거는이를 절대로 치지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.