Odpowiedzi:
Zgodnie z komentarzem użytkownika na tej stronie MSDN , musisz dodać odwołanie do biblioteki WindowsBase .Net.
Rozwiązanie C # w programie Visual Studio 2010 z .NET 4.0:
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.
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 -
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)
Przestrzeń System.IO.Packagingnazw jest udostępniana przez WindowsBase. Dodając odniesienie, dodaj je WindowsBasejako odniesienie zamiast próbować znaleźć System.IO.Packaging.
Musisz dodać odwołanie do WindowsBase.dll. Tam znajduje się System.IO.Packaging.
Więcej informacji znajdziesz w tym artykule:
http://msdn.microsoft.com/en-us/library/system.io.packaging.package.aspx
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 \
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.