2014-11-25 20 views
10

Tôi đang cố gắng sử dụng System.IO.Compression.ZipArchive trong thư viện lớp ASP.NET VNext trong bản xem trước VS2015. Tôi đã thêm gói System.IO.Compression bằng NuGet và thêm nó vào project.json của tôi dưới dạng phụ thuộc aspnetcore50.System.IO.Compression trong ASP.NET VNext đầy đủ CLR

Khi tôi cố gắng sử dụng các ZipArchive, intellisense nói là không có sẵn trong ASP.NET 5.0 nhưng nó có sẵn trong ASP.NET Core 5.0. Nếu tôi chuyển sang sử dụng ASP.NET Core bằng cách sử dụng thả xuống trong thanh trên cùng, sau đó mã của tôi hoạt động như mong đợi, nhưng khi tôi chọn bình thường ASP.NET nó không hoạt động.

Tôi đã thử thêm thủ công dưới dạng phụ thuộc vào aspnet50 trong project.json, nhưng điều đó không khắc phục được.

Tôi cần sử dụng CLR đầy đủ trên CLR lõi vì tôi cần tải cụm vào AppDomain vào thời gian chạy và tôi tin rằng điều này không được hỗ trợ trong CLR lõi.

Xin vui lòng ai đó có thể giải thích những gì đang xảy ra ở đây, có thể chỉ cho tôi một số bài viết hoặc bài đăng trên blog, chỉ cho tôi cách khắc phục điều này.

Cập nhật: Tôi đoán một cách tốt hơn hoặc từ ngữ này là - ZipArchive không có sẵn trong aspnet50, nhưng nó có sẵn trong aspnetcore50 khi tôi thêm các NuGet gói System.IO.Compression. Tại sao điều này?

+0

Bạn đã thử thêm System.IO.Compression như một tài liệu tham khảo lắp ráp, thay vì NuGet? Nó là một phần của cài đặt .NET framework mặc định. – fejesjoco

+0

Tôi vẫn đang học v5.0, nhưng tôi không nghĩ rằng bạn cần phải làm điều đó khi nhắm mục tiêu toàn bộ CLR. Tôi có không gian tên có sẵn nhưng ZipArchive không có, đó là lý do tại sao tôi đã thử thêm nó thông qua NuGet, mà sau đó chỉ thêm nó vào Core CLR. – Tom

+0

Thêm tham chiếu assembly cơ bản là điều bình thường để thực hiện. NuGet là một phần mở rộng, bạn chỉ cần khi bạn thêm một tham chiếu ngoài không có trong .NET. Hoặc nó đã được gỡ bỏ từ .NET v5? – fejesjoco

Trả lời

13

Chúng chỉ là cách mà tôi nhận được dự án để biên dịch và làm việc đã làm như sau trong project.json. Tôi không quá quen thuộc với thư viện nén nên tôi không dành thời gian để nén một tập tin. Bên dưới, bạn sẽ có một mã mẫu sẽ biên dịch mà không có vấn đề gì.


{ 
    "version": "1.0.0-*", 
    "dependencies": { 

    }, 

    "frameworks": { 
     "aspnet50": { 
      "dependencies": { 

      }, 
      "frameworkAssemblies": {     
       "System.IO.Compression": "4.0.0.0" 

      } 
     }, 
     "aspnetcore50": { 
      "dependencies": { 
       "System.Runtime": "4.0.20-beta-22231",     
       "System.IO.Compression.ZipFile": "4.0.0-beta-22231", 
       "System.IO": "4.0.10-beta-22231", 
       "System.IO.FileSystem": "4.0.0-beta-22231" 

      } 
     } 
    } 
} 

Mẫu Mã

public static void ZipFile(string path) 
    { 
     var data = new MemoryStream(File.ReadAllBytes(path)); 
     var zip = new ZipArchive(data, ZipArchiveMode.Create,false); 
     zip.CreateEntry(path + ".zip");    
    } 
+0

Cảm ơn! Có vẻ như tôi đã bỏ lỡ 'frameworkAssemblies '' từ aspnet50. Tôi không biết về điều này. Đây có phải là cách mới để thêm tham chiếu assembly cho các assembly là một phần của framework không? – Tom

+0

Xin chào Tom, tôi không chắc chắn 100% nhưng tôi nghĩ đó là cách mới, tôi gặp vấn đề tương tự với httpclient và cách họ giải quyết vấn đề là thêm tham chiếu chính và tham chiếu khung. –

+0

Cảm ơn bạn !!! Tôi phải đã dành bốn giờ chỉ cần cố gắng thêm một tham chiếu khung trong dự án vNext của tôi. Tôi cảm thấy rất chán nản vì nó sẽ mất không quá năm giây, nhưng câu trả lời này đã cứu cả ngày! – slypete

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