System.IO.Packaging

115

Mon projet est défini sur .NET Framework 4.0. Quand j'ajoute System.IO.Packaging, ça dit que ça n'existe pas. Il n'apparaît pas non plus lorsque j'essaye de l'ajouter comme référence au projet.

Comment puis-je ajouter System.IO.Packagingà mon projet C #?

Canard
la source

Réponses:

171

Selon un commentaire d'utilisateur sur cette page MSDN , vous devez ajouter une référence à la bibliothèque WindowsBase .Net.

Pedro
la source
20
Vous n'avez même pas besoin d'un commentaire d'utilisateur. Si vous regardez les documents pour l'une des méthodes / objets / etc. dans l'espace de noms, ils disent tous "Assembly: WindowBase.dll"
dlev
Quand je suis allé sur le lien dans la réponse, je n'ai pas vu comment je saurais ajouter la bibliothèque WindowsBase.Net. Je l'ai ajouté et j'ai maintenant accès à system.io.packaging. Alors merci pour cela, mais pouvez-vous expliquer ce que je ne vois pas à propos de l'accès à system.io.packaging via la bibliothèque WindowsBase.Net?
Alan
La page contenait des commentaires d'utilisateurs qui mentionnaient WindowsBase. Il semble que Microsoft ait supprimé les commentaires de ses documents.
Pedro
81

Pour une solution C # dans Visual Studio 2010 avec .NET 4.0:

  1. Dans l'Explorateur de solutions de votre projet, cliquez avec le bouton droit sur Références et sélectionnez Ajouter des références dans le menu contextuel.
  2. Sélectionnez Assemblys dans le volet de gauche, puis cliquez sur le bouton Parcourir en regard du champ Nom de fichier près du bas du volet.
  3. Accédez aux assemblys de référence .NET 4.0 et sélectionnez WindowsBase.dll . Par exemple, sur ma machine (Windows 7, 64 bits), le chemin complet est:

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

Enregistrez la solution (en particulier si vous compilez à partir de la ligne de commande avec MSBuild) et vous devriez maintenant pouvoir ajouter la directive using System.IO.Packaging en haut de votre fichier .cs sans qu'une erreur n'apparaisse.

Steve HHH
la source
4
Pas besoin de parcourir la dll, elle est déjà disponible sous Assemblies> Framework.
Altaf Patel
@AltafPatel pour moi, il ne s'est pas présenté, j'ai dû y accéder. Assurez-vous également que votre projet est configuré pour être compilé avec la version .NET correspondante du fichier référencé (dans ce cas 4.0).
David Rogers
5

Nous pouvons également ajouter WindowsBase.dll dans Dot Net Framework 3.5. J'utilise la machine XP et le chemin pour WindowsBase.dll est

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

Un exemple d'utilisation System.IO.packagingest donné ici -

Utilisation de System.IO.Packaging pour générer un fichier ZIP

Tapash
la source
4

System.IO.Packagingest un espace de noms, pas une référence. La plupart (toutes?) Des classes de l'espace de noms, telles que ZipPackage , sont déployées dans WindowsBase.dll.

Assurez-vous d'avoir une référence à WindowsBase.dll- si vous le faites, vous pouvez simplement ajouter: using System.IO.Packaging;à vos fichiers .cs, et tout ira bien.

Notez que vous pouvez le voir dans la documentation de n'importe quelle classe sur MSDN . Par exemple, dans ZipPackage, il répertorie:

Namespace:  System.IO.Packaging
Assembly:  WindowsBase (in WindowsBase.dll)
Reed Copsey
la source
+1 - Je n'ai pas remarqué que des pages individuelles notent l'assemblage à utiliser. Je m'y serais attendu sur la page principale de l'espace de noms, mais comme ceux-ci ne correspondent pas toujours, il est logique de regarder les classes dont vous pourriez avoir besoin.
Pedro
3

L' System.IO.Packagingespace de noms est fourni par WindowsBase. Lorsque vous ajoutez une référence, ajoutez-la WindowsBasecomme référence au lieu d'essayer de trouver System.IO.Packaging.

Matthew Abbott
la source
2

System.IO.Packaging v4.0.30319 est dans WindowsBase.dll v4.0.30319

Pour Windows 10, vous pouvez peut-être trouver ici

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

Arnonthawajjana Chainarong
la source
0

Dans mon cas, j'utilisais un gestionnaire ashx. Pour que cela fonctionne, vous devez ajouter l'assembly au projet et au gestionnaire:

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

Cela a finalement fonctionné pour moi, j'ai essayé plusieurs fois d'ajouter WindowsBase comme référence (VS redémarré, machine redémarrée aussi) mais cela ne fonctionnait toujours pas jusqu'à ce que je l'ajoute explicitement dans ma page aspx. J'ai utilisé: <%@ Assembly Name="WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>comme la DLL que j'avais référencée était la version 4.0.

Lanklaas
la source