2010-07-06 30 views
6

Visual studio theo mặc định sao chép tất cả các dll 'vào mỗi thư mục bin của dự án. Điều này cũng bao gồm dlls hệ thống '(ngoại trừ mscorlib.dll và System.dll), chẳng hạn như System.Xml.Linq, System.ComponentModel.Composition (bao gồm kể từ SL4), v.v.Sao chép các dll địa phương và hệ thống '- điểm là gì?

Vì những tệp này được bao gồm trong mỗi kích thước XAP, XAP tăng đáng kể. Trong thử nghiệm giới hạn của tôi, thiết lập "Sao chép địa phương" thành false dường như không phá vỡ bất cứ điều gì. Tại sao Visual Studio thêm các tệp này vào đường dẫn bin? Vì một người dùng đã có Silverlight, tôi có thể giả định rằng các assembly này đã được cài đặt trong GAC của mỗi người dùng hay tôi thiếu một cái gì đó?

Trả lời

5

Các tập tin bạn đề cập không nằm trong thời gian chạy cài đặt của Silverlight. Ứng dụng Silverlight sử dụng các thư viện này phải cung cấp cho người dùng như là một phần của quá trình tải xuống.

Bạn có thể giảm thiểu một số tác động bằng cách đặt tùy chọn "Giảm kích thước XAP bằng cách sử dụng bộ nhớ đệm của thư viện" trong tab Silverlight của trang thuộc tính dự án.

Tùy chọn này khiến mỗi tệp này được đặt trong các tệp Zip riêng biệt sẽ được đặt trong cùng một thư mục với XAP.

Điều này giúp trong các trường hợp mà trang web của bạn có thể có nhiều Xaps cho các ứng dụng khác nhau hoặc nơi bạn phát hành phiên bản mới thường xuyên. Đối với một ứng dụng duy nhất thay đổi hiếm khi hoặc bị ảnh hưởng bởi nhiều khách truy cập, nó không hữu ích lắm.

+0

Hoàn toàn hợp lý. Cảm ơn thông tin ... rất hữu ích. – user1961100

0

Không theo mặc định, dll là khung công cụ cụ thể thường được lưu trữ trong GAC không được sao chép vào thư mục bin đầu ra và bạn có thể giả sử chúng sẽ nằm trên máy khách.

Sao chép Địa phương ở trên được đề cập là mặc định thành false, vì vậy tôi tin rằng ở một số giai đoạn chúng đã được thay đổi thành true.

Tuy nhiên, nếu không biết chính xác những gì của dll được gọi tôi không thể nói chính xác

+0

Trong trường hợp của tôi, chúng là System.Xml.Linq, System.Windows, System.ComponentModel.Composition, System.Runtime.Serialization và System.Windows.Browser. –

+0

@Blake: Tất cả những dll này là một phần của SDK và sẽ cần được cung cấp từ trang web của bạn dưới dạng thư viện được lưu trong bộ nhớ cache (xem câu trả lời của tôi) hoặc như một phần của Xap. – AnthonyWJones

0

Tôi nghĩ rằng chìa khóa ở đây là "dường như không phá vỡ bất cứ điều gì". Vì các ứng dụng Silverlight có thể chạy trên nhiều nền tảng và trình duyệt với các phiên bản khác nhau nên bạn không thể đưa ra giả định một cái gì đó sẽ hoạt động vì nó hoạt động trên máy của bạn hoặc thậm chí một hoặc hai người khác.

Nếu các tệp DLL được bao gồm bởi vì chúng có khả năng cần thiết, do đó bạn cần chắc chắn chúng sẽ ở đó nếu bạn đang có kế hoạch phân phối rộng ứng dụng của mình.

Ví dụ: tôi đã làm việc trên ứng dụng dựa trên Prism với tải chậm mô-đun. Hầu hết các XAP đã được giảm xuống còn khoảng 20k vì các mô đun phụ được đảm bảo để có thể sử dụng các tệp DLL mà chúng yêu cầu khi chúng nằm trong Shell XAP.

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