2013-05-08 24 views
8

Mẫu VSPackage mặc định trong Visual Studio 2012 SDK tạo ra một dự án sử dụng đặt tên mạnh.Do Visual Studio Extensions (VSIX) có cần phải được đặt tên mạnh không?

Vì đặt tên mạnh là chuyển đổi, điều này có nghĩa là mọi tham chiếu tôi thêm (ví dụ: dự án khác trong cùng một giải pháp hoặc phụ thuộc bên thứ ba) cũng cần được đặt tên mạnh.

Vì tôi không cảm thấy thoải mái khi đặt tên phụ thuộc mạnh mẽ của bên thứ ba, tôi muốn xóa tên mạnh khỏi VSIX của tôi.

Nhược điểm của việc này là gì?

+0

Khi tôi loại bỏ đặt tên mạnh khỏi VSIX của tôi, phần mở rộng không triển khai (hiển thị) trong Visual Studio. Tôi đang sử dụng Visual Studio 2015. –

Trả lời

4

Nếu bạn đã sẵn sàng triển khai VSIX và không cần bất kỳ thứ gì trong GAC, thì không, Visual Studio không yêu cầu bạn phải ký tên mạnh. Tôi tin rằng trình thuật sĩ mẫu yêu cầu ký tên mạnh mẽ, nhưng chỉ vì chúng phải được cài đặt vào GAC.

Tôi có thể nghĩ đến một vài lý do bạn có thể muốn: Nếu gói của bạn hiển thị API công khai mà các tiện ích mở rộng khác tiêu thụ, bạn có thể tham chiếu một DLL phổ biến như những người khác đang sử dụng API công khai của bạn. Bạn có thể muốn mạnh tên ký nhị phân giao diện công cộng, và tùy thuộc vào cách dự án của bạn được thiết lập, bạn có thể phải ký tên mạnh mẽ tất cả mọi thứ.

Ngoài ra, nếu bạn không ký tên mạnh, bạn có nguy cơ xảy ra xung đột tên với tiện ích mở rộng khác. Nếu bạn tạo ra một DLL gọi là "Package.dll" và phần mở rộng khác cũng đã làm, và không phải của bạn tên mạnh ký kết nhị phân của bạn, nó có thể CLR sẽ nhận được một chút nhầm lẫn ở đây. Vì vậy, nếu bạn không ký tên mạnh, hãy đảm bảo tên lắp ráp của bạn là "đủ độc đáo" để tránh rủi ro này.

Đối với những gì nó có giá trị, khi chúng tôi kiểm tra dịch vụ ngôn ngữ Roslyn nội bộ, chúng tôi chỉ cần làm như vậy bằng cách cài đặt một VSIX có chứa tất cả các bit Roslyn. Việc tìm hiểu nhanh thông qua lịch sử kiểm soát nguồn ngụ ý rằng chúng tôi đã không ký tên mạnh mẽ các gói nhị phân của chúng tôi trong năm đầu tiên và một nửa, cho đến khi chúng tôi cuối cùng phải là một phần của quá trình chuyển mã từ Microsoft.

+1

> Tôi tin rằng trình thuật sĩ mẫu yêu cầu ký tên mạnh mẽ, nhưng chỉ vì chúng phải được cài đặt vào GAC. Không chính xác. Họ cần phải được đặt tên mạnh, nhưng không cần phải ở trong GAC. – kzu

Các vấn đề liên quan