2013-02-13 13 views
8

Nếu bạn tạo ứng dụng Windows Phone 8 trong Visual Studio và tham chiếu bất kỳ libs nào với các tệp tài liệu XML được cung cấp từ nuget hoặc thủ công, Visual Studio sẽ tự động đóng gói các tệp XML đó vào XAP đầu ra .Visual Studio gói vào các tệp tài liệu XML không cần thiết WP8 XAP

Trong trường hợp của chúng tôi, hành vi kỳ lạ này của Visual Studio làm tăng kích thước XAP gần gấp đôi. (Chúng tôi có tổng cộng 8 triệu tài liệu xml.)

Không có vấn đề nào đối với các dự án ứng dụng WP7.

Cách giảm kích thước tệp xap bằng cách buộc Visual Studio không đóng gói các tệp tài liệu không cần thiết?

Cập nhật 14/02/2013:

bước để tạo lại vấn đề:

  1. Tạo Windows Phone 8 dự án ứng dụng sử dụng Visual Studio
  2. Reference “Extensions phản ứng - Thư viện chính” sử dụng Trình quản lý gói NuGet
  3. Giải pháp xây dựng
  4. Chuyển đến thư mục Bin và mở gói lưu trữ XAP

Bạn sẽ tìm thấy có rất nhiều file XML doc không cần thiết như “System.Reactive.Core.xml”

Tôi tin rằng đây là vấn đề bảo mật, bởi vì nếu bạn kích hoạt hệ doc XML cho dự án của bạn (hoặc khác các dự án trong giải pháp), các tài liệu XML đó cũng sẽ được đóng gói thành XAP - điều này là không mong muốn khi bất kỳ ai cũng có thể đọc nhận xét về mã của bạn.

+0

Bạn có thể chỉ định những gói NuGet thực hiện điều này không? Ví dụ: –

+0

Tiện ích mở rộng phản ứng - Lib chính. –

+0

Nhìn thấy nó quá, nghĩ rằng nó có cái gì để làm với sự khác biệt giữa các kịch bản MSBuild cho WP7 và WP8, tôi sẽ cố gắng đào này tốt hơn một khi tôi có cơ hội! –

Trả lời

6

Cập nhật ngày 20/02/2013

Như @ A-sinh viên chỉ ra trong các ý kiến, giải pháp trước đây của tôi sẽ buộc bạn phải thêm những thứ MSBuild trong mỗi dự án trong một giải pháp.

Cái này chỉ yêu cầu bạn nhập nó vào các dự án thực sự có một đầu ra tập tin XAP/phụ lục:

<PropertyGroup> 
    <FilesToXapDependsOn>$(FilesToXapDependsOn);AfterFilesToXapDependsOn</FilesToXapDependsOn> 
</PropertyGroup> 
<Target Name="AfterFilesToXapDependsOn"> 
    <ItemGroup> 
    <FilteredPackagingOutputs Remove="@(FilteredPackagingOutputs)" Condition="'%(FilteredPackagingOutputs.OutputGroup)' == 'CopyLocalFilesOutputGroup' AND '%(FilteredPackagingOutputs.Extension)' == '.xml'" /> 
    </ItemGroup> 
</Target> 

Đó là một chút của một hack và nên được sử dụng một cách cẩn thận (không chắc chắn ngay bây giờ những gì ý nghĩa điều này có thể thực sự có), nhưng dường như thực hiện công việc một cách hoàn hảo ngay bây giờ!

+1

Cảm ơn bạn đã trả lời. Tôi đã thử nghiệm giải pháp của bạn và thấy rằng các tệp doc XML bị xóa khỏi thư mục đầu ra nhưng vẫn được đóng gói vào XAP: ( –

+0

Ngay bây giờ giải pháp trên dường như hoạt động tốt trong cả ứng dụng WP8 và Win8, bạn có thể cung cấp dự án mẫu không của bạn cho tôi để kiểm tra? Bạn đang sử dụng Visual Studio Express? –

+0

Hãy chắc chắn rằng bạn thực sự làm sạch + xây dựng (hoặc xây dựng lại) của giải pháp! Nếu không có gì khác hoạt động, rơi tự do liên hệ với tôi trực tiếp (địa chỉ liên lạc trong hồ sơ của tôi) –

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