System.IO.Packaging

115

Mam projekt ustawiony na .NET Framework 4.0. Kiedy dodam System.IO.Packaging, mówi, że nie istnieje. Nie pojawia się również, gdy próbuję dodać go jako odniesienie do projektu.

Jak mogę dodać System.IO.Packagingdo mojego projektu C #?

Kaczor
źródło

Odpowiedzi:

171

Zgodnie z komentarzem użytkownika na tej stronie MSDN , musisz dodać odwołanie do biblioteki WindowsBase .Net.

Pedro
źródło
20
Nie potrzebujesz nawet komentarza użytkownika. Jeśli spojrzysz na dokumentację dla którejkolwiek z rzeczywistych metod / obiektów / itp. w przestrzeni nazw wszyscy mówią „Assembly: WindowBase.dll”
dlev,
Kiedy przeszedłem do linku w odpowiedzi, nie wiedziałem, skąd mam wiedzieć, aby dodać bibliotekę WindowsBase.Net. Dodałem go i mam teraz dostęp do system.io.packaging. Dziękuję za to, ale czy mógłbyś wyjaśnić, czego nie widzę, jeśli chodzi o dostęp do pakietu system.io. przez bibliotekę WindowsBase.Net?
Alan
Strona zawierała komentarze użytkowników, które wspominały o WindowsBase. Wygląda na to, że firma Microsoft usunęła komentarze ze swoich dokumentów.
Pedro
81

Rozwiązanie C # w programie Visual Studio 2010 z .NET 4.0:

  1. W Eksploratorze rozwiązań projektu kliknij prawym przyciskiem myszy odwołania i wybierz opcję Dodaj odwołania z menu kontekstowego.
  2. Wybierz opcję Zespoły w panelu po lewej stronie, a następnie kliknij przycisk Przeglądaj obok pola Nazwa pliku w pobliżu dolnej części panelu.
  3. Przejdź do zestawów referencyjnych .NET 4.0 i wybierz WindowsBase.dll . Na przykład na moim komputerze (Windows 7, 64-bitowy) pełna ścieżka to:

C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0 \ WindowsBase.dll

Zapisz rozwiązanie (zwłaszcza jeśli kompilujesz z wiersza polecenia za pomocą programu MSBuild) i powinieneś teraz móc dodać dyrektywę using System.IO.Packaging na początku pliku .cs bez pojawiania się błędu.

Steve HHH
źródło
4
Nie ma potrzeby przeglądania dll, jest już dostępna w obszarze Zestawy> Framework.
Altaf Patel
@AltafPatel dla mnie nie pojawił się, musiałem go przeglądać. Upewnij się również, że projekt jest skonfigurowany do kompilowania z odpowiednią wersją .NET pliku, do którego się odwołuje (w tym przypadku 4.0).
David Rogers
5

Możemy również dodać WindowsBase.dll w Dot Net Framework 3.5. Używam komputera XP, a ścieżka do pliku WindowsBase.dll to

C: \ Program Files \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v3.5 \ Profile \ Client \ WindowsBase.dll

Przykład użycia System.IO.packagingpodano tutaj -

Użycie System.IO.Packaging do wygenerowania pliku ZIP

Tapash
źródło
4

System.IO.Packagingjest przestrzenią nazw, a nie odwołaniem. Większość (wszystkie?) Klas w przestrzeni nazw, takich jak ZipPackage , jest wdrażanych w WindowsBase.dll.

Upewnij się, że masz odniesienie do WindowsBase.dll- jeśli tak, możesz po prostu dodać: using System.IO.Packaging;do swoich plików .cs i wszystko będzie dobrze.

Zauważ, że możesz to zobaczyć w dokumentacji dowolnej klasy w witrynie MSDN . Na przykład w programie ZipPackagezawiera:

Namespace:  System.IO.Packaging
Assembly:  WindowsBase (in WindowsBase.dll)
Reed Copsey
źródło
+1 - Nie zauważyłem, że poszczególne strony odnotowują montaż do użycia. Spodziewałbym się tego na głównej stronie przestrzeni nazw, ale ponieważ nie zawsze są one zgodne, warto przyjrzeć się klasom, których możesz potrzebować.
Pedro
3

Przestrzeń System.IO.Packagingnazw jest udostępniana przez WindowsBase. Dodając odniesienie, dodaj je WindowsBasejako odniesienie zamiast próbować znaleźć System.IO.Packaging.

Matthew Abbott
źródło
2

System.IO.Packaging v4.0.30319 znajduje się w WindowsBase.dll v4.0.30319

W przypadku systemu Windows 10 może znalazłeś się tutaj

C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ WindowsBase \ v4.0_4.0.0.0__31bf3856ad364e35 \

Arnonthawajjana Chainarong
źródło
0

W moim przypadku korzystałem z handlera ashx. Aby to działało, musisz dodać assemble do projektu i handler:

<%@ WebHandler Language="C#" Class="UploadExcelFile2" %>
<%@ Assembly Name="WindowsBase, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>

To w końcu zadziałało dla mnie, wiele razy próbowałem dodać WindowsBase jako odniesienie (zrestartowałem VS, zrestartowałem komputer też), ale nadal nie działało, dopóki nie dodałem tego jawnie na mojej stronie aspx. Użyłem: <%@ Assembly Name="WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>jako dll, do którego się odwoływałem, była wersja 4.0.

Lanklaas
źródło