2010-05-26 4 views
6

Điều này tương tự như Add Non-GAC reference to project nhưng các giải pháp được trình bày ở đó dường như không giúp ích gì.Tham chiếu phiên bản không phải GAC của DLL trong Visual Studio 2010

Tôi có Thư viện giao diện người dùng WinForms (Krypton từ ComponentFactory) được cài đặt trong GAC. Có một lỗi mà tôi muốn theo dõi trong thư viện đó, vì vậy tôi đã thêm mã nguồn vào giải pháp của mình, loại bỏ các tham chiếu cũ khỏi dự án WinForms của tôi thành Krypton DLLs, thêm chúng trở lại như một tham chiếu dự án, đảm bảo Copy Local được đặt thành true, kiểm tra lại rằng đường dẫn (trên tab thuộc tính tham chiếu) trỏ đến dự án cục bộ của tôi, và ...

... phiên bản GAC vẫn đang được sử dụng trong khi gỡ lỗi. Tôi không thể đặt điểm ngắt trong nguồn Krypton, Debugger.Break() hoặc các thay đổi mã khác để không thực thi và khi tôi khởi động trình gỡ rối Visual Studio 2010, tôi thấy thông báo Đang tải từ ... GAC_MISL liên quan đến các tệp DLL Krypton flash trong VS 2010 thanh trạng thái. Các DLL không được sao chép vào thư mục Debug của WinForm.

Tôi làm cách nào để tham khảo phiên bản "dự án" của các tệp trong khi gỡ lỗi trong khi để chúng được đăng ký trong GAC?

Trả lời

5

CLR sẽ luôn luôn tìm trong GAC trước. Đừng ngần ngại sử dụng gacutil.exe/u để xóa chúng. Việc hack [AssemblyVersion] sẽ hoạt động quá sao cho bản sao GAC sẽ không khớp.

+0

gacutil dường như được đặt ở một vài nơi - hãy thử tìm kiếm trong 'C: \ Program Files (x86) \ '. Đây là một trong những đường dẫn trên máy chủ của tôi: 'C: \ Program Files (x86) \ Microsoft SDK \ Windows \ v8.0A \ bin \ NETFX 4.0 Công cụ \ x64' – northben

+0

Điều này vẫn đúng? Có cách nào để ưu tiên dự án được tham chiếu thay vì GAC không? Dường như với tôi một lỗ hổng lớn trong bối cảnh gỡ lỗi; Microsoft nên giải quyết IMHO này. –

+0

Đó là sự thật, nó vẫn đúng, nó sẽ luôn luôn là sự thật. Bạn sẽ phải nói chuyện với Microsoft nhưng bạn có thể chắc chắn lên phía trước rằng họ sẽ hoàn toàn bỏ qua bạn :) Lạm dụng GAC trên máy dev của bạn chỉ là một ý tưởng tồi tệ, nó là một chi tiết triển khai mà chỉ quan trọng trên máy của người dùng. Đó là nạn nhân thực sự của DLL Hell. Có địa ngục trên một máy dev là một vấn đề tự gây ra. –