Cách gỡ lỗi tiện ích mở rộng Visual Studio


93

Tôi chỉ đang viết một tiện ích mở rộng VSIX cho Visual Studio 2010 và không thể tìm ra cách gỡ lỗi nó.

Một phương pháp rõ ràng là xuất thông báo. Sử dụng mẫu tiện ích mở rộng Trace.WriteLine(). Nhưng tìm đầu ra của nó ở đâu?

Câu trả lời:


184

Phần mở rộng Visual Studio có thể được gỡ lỗi giống như bất kỳ ứng dụng nào khác. Bạn chỉ cần thiết lập trải nghiệm gỡ lỗi để khởi chạy devenv với phần mở rộng đã tải. Hãy thử những điều sau đây

  • Nhấp chuột phải vào dự án và chọn Thuộc tính
  • Đi tới tab Gỡ lỗi

Bấm vào nút radio cho Start External Program. Trỏ nó vào tệp nhị phân devenv.exe. Trên máy của tôi, nó nằm ở

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

Tuy nhiên, trên máy không phải x64, bạn có thể xóa phần "(x86)".

Sau đó đặt các đối số dòng lệnh thành /rootsuffix Exp. Điều này yêu cầu Visual Studio sử dụng tổ ong thử nghiệm thay vì tổ hợp cấu hình bình thường. Theo mặc định, các tiện ích mở rộng VSIX khi được tạo sẽ tự đăng ký trong tổ hợp thử nghiệm.

Bây giờ bạn có thể F5 và nó sẽ khởi động Visual Studio với VSIX của bạn dưới dạng tiện ích mở rộng có sẵn.


cảm ơn bạn vì câu trả lời này, đã giải quyết một vấn đề trong một lần truy cập. Nhiều nghĩa vụ!
Richard Griffiths

@JaredPar - có cách nào để cho tiện ích mở rộng vs2012 đăng ký chính nó trong tổ hợp thử nghiệm của bản xem trước vs2015 không?
Srikanth Venugopalan

1
Có vẻ như điều này chỉ hoạt động nếu các phiên bản bạn sử dụng để gỡ lỗi và kiểm tra giống nhau. Vì vậy, bạn không thể gỡ lỗi vào năm 2013 và chạy tiện ích mở rộng vào năm 2015. @SrikanthVenugopalan
Maria Ines Parnisari,

@miparnisari - có, có vẻ như vậy. Tuy nhiên, hơi khó, nếu bạn đang hỗ trợ nhiều phiên bản.
Srikanth Venugopalan

2
Xin chào, ý bạn là nó sẽ bắt đầu VS với VSIX của tôi như một "tiện ích mở rộng có sẵn"? Tôi tìm các tiện ích mở rộng có sẵn ở đâu? Khi tôi chuyển đến Công cụ -> Tiện ích mở rộng và Cập nhật, tôi chỉ thấy "Đã cài đặt", "Trực tuyến" và "Cập nhật".
pabrams

54

Câu trả lời được chấp nhận bởi @JaredPar là đúng về mặt kỹ thuật, nhưng gặp phải thực tế là bạn cần phải làm lại nó cho mọi nhà phát triển, mỗi khi bạn nhận được bản sao mới của mã và bất kỳ lúc nào csproj.usertệp bị xóa. Khi bạn làm theo cách đó, các cài đặt sẽ được lưu trong csproj.usertệp.

Một lựa chọn tốt hơn là đưa các cài đặt vào csprojtệp để chúng không bị mất. Thật không may, Visual Studio không cho phép bạn làm điều này tự động, vì vậy bạn cần phải thêm cài đặt theo cách thủ công. May mắn thay, các cài đặt đều giống nhau cho bất kỳ dự án nào.

Nhấp chuột phải và dỡ bỏ dự án, sau đó nhấp chuột phải một lần nữa và chỉnh sửa csprojtệp tệp dự án. Trong XML, hãy thêm phần sau vào phần đầu tiên PropertyGroup, ví dụ ngay sau TargetFramework.

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

Điều này có những ưu điểm sau;

  • Nó thiết lập nó để gỡ lỗi và phát hành
  • Nó chạy bất kỳ phiên bản Visual Studio nào bạn hiện đang chạy
  • Nó được kiểm tra trong kiểm soát nguồn, vì vậy mọi nhà phát triển không cần phải nhớ cách thực hiện :)

Như @MBulli đã nêu trong nhận xét, nếu bạn đã thực hiện các thay đổi trong câu trả lời được chấp nhận, hãy xóa *.csproj.usertệp của bạn vì cài đặt trong đó sẽ ghi đè cài đặt bạn đã thêm vào csprojtệp chính .


6
Đảm bảo xóa tệp * .csproj.user vì cài đặt người dùng được ưu tiên hơn cài đặt dự án.
MBulli

Câu trả lời tuyệt vời, cảm ơn! Hiệu quả hơn nhiều so với cách được chấp nhận.
Zverev Evgeniy

Hoạt động hoàn hảo cho so với năm 2019
x0n

2

Các OutputWindowHelper.OutputString phương pháp ghi vào 'General' khung cửa sổ đầu ra (Ctrl Alt o). Tôi đã thêm dòng này trong tài liệu tham khảo .csproj của mình để lấy dòng này trong VS 2013

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

Cũng xem câu trả lời này .


Lưu ý OutputWindowHelper không tồn tại trong Visual Studio 2015. Máy chỉ có VS2015 sẽ gặp lỗi nếu điều này được gọi. Xem thêm github.com/landofjoe/NuspecPackager/issues/1
Quango

0

Nếu bạn cố gắng gỡ lỗi UnitTestExtension, bạn cũng nên đính kèm trình gỡ lỗi vào các quy trình vstest. *. Exe như descibed ở đây . Nếu không, bạn có thể thấy điểm ngắt kích hoạt nhưng trình gỡ lỗi sẽ không bao giờ đánh trúng nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.