2016-06-01 11 views
0

私はこのサイトをしばらく検索しており、解決策を見つけることはできません。私は私のディレクトリからいくつかのPDFファイルを圧縮するためにZIPファイルを使用するようにしようとしていますが、私はUsing zip As ZipFile = New ZipFileを入力するたびに、私は言ってエラーを取得:VB.Net 4.6 Zipfileを使用

「システムを実装しなければならないタイプのオペランド「System.IO.Compression.ZipFile」「を使用して」

。 IDisposable '

' System.IO.Compression.ZipFile 'にはコンストラクタがありません。その後、System.IO.CompressionSystem.IO.Compression.Filesystemを私は正しい.NET Frameworkを使用していると私はVSで.NET 4.6を使用しています確認しました:

私が見つけたこのサイトを検索した後、私は私が追加しましたいくつかの参照を追加する必要がありました私は何をすべきかに固執しています。私が望むのは、フォルダから複数のファイルを圧縮することでしたが、私はZipFileを使用できません。これを調べる場所に関する情報は非常に高く評価されています。

私が使用していたコードは次のようになります。この例から

Dim ZipToCreate As String = "ex1.zip" 
Dim DirectoryToZip As String = "c:\temp" 
Using zip As ZipFile = New ZipFile 
    Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip) 
    Dim filename As String 
    For Each filename In filenames 
     zip.AddFile(filename) 
    Next 
    zip.Save(ZipToCreate) 
End Using 

- >how to Zip files in vb.net 2005

答えて

1

アップミキシングされています。

コピー元のサンプルコードでは、クラス(.NET Frameworkの一部ではありません)を使用するためのDotNetZipライブラリへの参照が必要です。

.NET Framework自体には、ZipFileクラスもありますが、異なるAPIを使用しています。これは、現在コードが参照しているものです。

使いたいものを選んで正しいライブラリを参照し、適切なドキュメントを読んで適切にコーディングするようにしてください。

+0

返信ありがとうございます、私はまだvbの初心者ですので、これは間違って質問です:私はDotNetZipを参照したい場合は、私はちょうどそれをダウンロードする必要がありますか?異なるAPIを使用すると、どの.NETが使用されているかをどのように知ることができますか? – sammie91

+0

はい、ダウンロードするか、NuGetが入手できる場合はそれを入手する必要があります。異なるAPIについては、.NET版については言及していませんでした.DotNetZipを使用しているとは思わないでしょう。異なるAPIによって、ビルドインされた.NET Frameworkの 'ZipFile'クラスは' DotNetZip'ライブラリで定義された 'ZipFile'と同じメソッドを持っていないと言っていました。明らかに、それらを使うことはできません。同じ方法。クラス名は同じですが、実際は非常に異なります。 – sstan

+0

そんなに感謝します!だから私はそれをダウンロードし、私のビジュアルスタジオでそれを使用する場合、彼らはdotnetzipがインストールされていない場合、他の誰かが自分のプロジェクトを使用することができますか?私はこれを構築しているので、メインサーバに追加したいのですが、誰かがそれを使うことができるかどうか分かりません。答えを確認するには、ちょうどチェックマークをチェックするだけです。もう一度ありがとうございます – sammie91

0

エラーが明確にあなたがIDisposableを実装していないクラスにUsingを使用することはできませんと言うと、コンストラクタがないので、ZipFileのインスタンスを作成することはできません。 MSDN documentationを読むと、ZipFileクラスに静的メソッドしかないことがわかります。彼らは、zipファイルにDirectoryToZip内のすべてのファイルを圧縮することでしたZipToCreateと呼ばれている:あなたは、2つの異なる「ZIPファイル」のAPIを

ZipFile.CreateFromDirectory(DirectoryToZip, ZipToCreate) 
関連する問題