Tôi có 3 C# dự án A, B và C. Cả tham chiếu A và B. C. Tham chiếu đến C từ A và B được đặt thành "Sao chép cục bộ" ngụ ý rằng sau khi C được tạo đến C.dll (trong thư mục đầu ra của C), nó được sao chép vào thư mục đầu ra của A hoặc B (tùy theo cái nào đang được biên dịch)Visual Studio 2015 khóa DLL trong khi gỡ lỗi
Tôi có 2 giải pháp, SA và SB. SA chứa A và C và SB chứa B và C. Tôi khởi chạy 2 thể hiện của Visual Studio 2015. Tôi mở SA trong một thể hiện và SB trong một trường hợp khác.
Tôi thấy rằng nếu tôi bắt đầu gỡ lỗi (F5) A từ SA, và sau đó (trong khi A vẫn đang gỡ lỗi), thực hiện thay đổi C từ SB và cố gắng biên dịch SB, tôi nhận được lỗi biên dịch nói rằng C .dll không thể được viết quá mức vì nó đang được sử dụng bởi một tiến trình khác (ví dụ của devenv.exe đang chạy SA).
Điều này không có ý nghĩa đối với tôi vì sau khi biên dịch C thành C.dll và sao chép vào thư mục đầu ra của A, Visual Studio nên phát hành khóa trên tệp.
Tôi đã xác minh (qua cửa sổ module trong SA) rằng phiên bản của C.dll nạp là một trong đó đã được sao chép vào thư mục đầu ra của A.
này bắt đầu xảy ra ngày hôm qua khi tôi bắt đầu sử dụng Visual Studio 2015 (thay vì Visual Studio 2013).
Có ai có ý tưởng nào không? Giải pháp hiện tại của tôi là chạy SA thông qua CTRL-F5 (bắt đầu mà không gỡ lỗi), nhưng điều này trở nên khó chịu khi tôi muốn chạy SA và SB trong chế độ gỡ lỗi cùng một lúc.
Cảm ơn.
CẬP NHẬT
tôi đã làm một số nghiên cứu về lý do tại sao "Edit, Continue" tính năng có thể gây ra các hành vi được mô tả, và theo trang này https://msdn.microsoft.com/en-us/library/ms164926.aspx> Edit, Continue cho phép một thực hiện sửa đổi mã nguồn trong khi ở một gỡ lỗi phiên và có kết quả có hiệu lực mà không dừng gỡ lỗi, biên dịch lại, và khởi động lại phiên gỡ lỗi (những gì một vấn đề gnarly phải có được). Với tính năng đó được kích hoạt, Visual Studio có thể được yêu cầu biên dịch lại bất kỳ DLL phụ thuộc vào bất kỳ lúc nào giải thích khóa.
Quả cầu pha lê của tôi nói rằng đó thực sự là tệp PDB bị khóa. –
Đề xuất thú vị, tuy nhiên lỗi biên dịch từ SB rõ ràng nói rằng đó là DLL bị khóa và cố gắng xóa tệp DLL khỏi trình khám phá cửa sổ không thành công. Có lẽ PDB cũng bị khóa (mặc dù nó được sao chép vào thư mục đầu ra của A cũng vậy). Dù bằng cách nào, tôi cảm thấy như nó đã được chuyển đổi từ VS2013 để VS2015 mà kết quả trong hành vi tôi nhìn thấy và tôi hy vọng có một cách để sửa chữa nó. Lỗi: Không thể mở 'C: \ BUILD \ C \ x86 \ obj \ Debug \ C.dll' để viết - 'Quá trình không thể truy cập tệp' C: \ BUILD \ C \ x86 \ obj \ Debug \ C .dll 'bởi vì nó đang được sử dụng bởi một quá trình khác.' – Shea