System.IO.Packaging

115

Tenho meu projeto definido como .NET Framework 4.0. Quando eu adiciono System.IO.Packaging, diz que não existe. Ele também não aparece quando tento adicioná-lo como uma referência ao projeto.

Como posso adicionar System.IO.Packagingao meu projeto C #?

Drake
fonte

Respostas:

171

De acordo com um comentário do usuário nesta página do MSDN , você deve adicionar uma referência à biblioteca WindowsBase .Net.

Pedro
fonte
20
Você nem precisa de um comentário do usuário. Se você olhar os documentos para qualquer um dos métodos / objetos / etc. no namespace, todos dizem "Assembly: WindowBase.dll"
dlev
Quando acessei o link da resposta, não vi como saberia adicionar a biblioteca WindowsBase.Net. Eu o adicionei e agora tenho acesso a system.io.packaging. Obrigado por isso, mas você poderia explicar o que não estou vendo sobre saber como acessar o system.io.packaging por meio da biblioteca WindowsBase.Net?
Alan de
A página costumava ter comentários de usuários que mencionavam o WindowsBase. Parece que a Microsoft removeu comentários de seus documentos.
Pedro
81

Para uma solução C # no Visual Studio 2010 com .NET 4.0:

  1. No Solution Explorer do seu projeto, clique com o botão direito do mouse em References e selecione Add References no menu de contexto.
  2. Selecione Assemblies no painel esquerdo e clique no botão Browse próximo ao campo Nome do arquivo próximo ao fundo do painel.
  3. Navegue até os assemblies de referência do .NET 4.0 e selecione WindowsBase.dll . Por exemplo, na minha máquina (Windows 7, 64 bits), o caminho completo é:

C: \ Arquivos de programas (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0 \ WindowsBase.dll

Salve a solução (especialmente se você estiver compilando a partir da linha de comando com o MSBuild) e agora deverá ser capaz de adicionar a diretiva using System.IO.Packaging ao topo do seu arquivo .cs sem que um erro apareça.

Steve HHH
fonte
4
Não há necessidade de navegar até a dll, ela já está disponível em Assemblies> Framework.
Altaf Patel
@AltafPatel pra mim não apareceu, tive que navegar até lá. Certifique-se também de que seu projeto está configurado para compilar com a versão .NET correspondente do arquivo referenciado (neste caso 4.0).
David Rogers de
5

Também podemos adicionar WindowsBase.dll no Dot Net framework 3.5. Estou usando uma máquina XP e o caminho para WindowsBase.dll é

C: \ Arquivos de programas \ Assemblies de referência \ Microsoft \ Framework \ .NETFramework \ v3.5 \ Profile \ Client \ WindowsBase.dll

Um exemplo de uso System.IO.packagingé dado aqui -

Usando System.IO.Packaging para gerar um arquivo ZIP

Tapash
fonte
4

System.IO.Packagingé um namespace, não uma referência. A maioria (todas?) Das classes dentro do namespace, como ZipPackage , são implantadas em WindowsBase.dll.

Certifique-se de ter uma referência a WindowsBase.dll- se tiver, você pode apenas adicionar: using System.IO.Packaging;aos seus arquivos .cs, e você ficará bem.

Observe que você pode ver isso na documentação de qualquer classe no MSDN . Por exemplo, em ZipPackage, ele lista:

Namespace:  System.IO.Packaging
Assembly:  WindowsBase (in WindowsBase.dll)
Reed Copsey
fonte
+1 - não notei que as páginas individuais indicam a montagem a ser usada. Eu esperava isso na página principal do namespace, mas como nem sempre eles correspondem, faz sentido examinar as classes de que você pode precisar.
Pedro
3

O System.IO.Packagingnamespace é fornecido por WindowsBase. Ao adicionar uma referência, adicione WindowsBasecomo referência em vez de tentar encontrar System.IO.Packaging.

Matthew Abbott
fonte
2

System.IO.Packaging v4.0.30319 está em WindowsBase.dll v4.0.30319

Para Windows 10, talvez você possa encontrar aqui

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

Arnonthawajjana Chainarong
fonte
0

No meu caso, eu estava usando um manipulador ashx. Para que funcione, você precisa adicionar o assembly ao projeto e ao manipulador:

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

Isso finalmente funcionou para mim, tentei várias vezes adicionar WindowsBase como referência (reiniciei o VS, reiniciei a máquina também), mas ainda não estava funcionando até que eu adicionei isso explicitamente em minha página aspx. Usei: <%@ Assembly Name="WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>como a dll que referi era a versão 4.0.

Lanklaas
fonte