web-dev-qa-db-ja.com

「zipfile」という名前は現在のコンテキストに存在しません

そのまま実行できるSSISプロジェクトがありますが、編集しようとするとエラーが発生します。

「zipfile」という名前は現在のコンテキストに存在しません

編集しなくても、問題なく動作します。

エラーを生成しているコード:

public void Main()
{
    // TODO: Add your code here
    string moduleName = Dts.Variables["User::ModuleName"].Value.ToString();
    string s = Dts.Variables["User::ZipFileLocation"].Value.ToString().TrimEnd('\\') + "\\" + moduleName + "\\" + moduleName + "_" + DateTime.Now.ToString("ddMMyyyy");

    // TODO: Add your code here
    string startPath = s;
    string zipPath = s + ".Zip";

    try
    {
        File.Delete(zipPath);
        ZipFile.CreateFromDirectory(startPath, zipPath);
    }
    catch (Exception e)
    {
    }

    Dts.TaskResult = (int)ScriptResults.Success;
}

どうすればこれを解決できますか?

14
vignesh

.NETバージョン4.5を使用していることを確認してください。圧縮を参照DLL-パスは次のとおりです:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.IO.Compression.FileSystem.dll

using System.IO.Compression.FileSystemを追加して、クラスで参照します。クラスが別のクラスから継承されている場合は、親クラスでも参照してください。 (これは私がそれをコンパイルするためにしなければならないことです)

18
Puneet Vedi

ZipFileクラスを使用するには、プロジェクトのSystem.IO.Compression.FileSystemアセンブリへの参照を追加する必要があります。そうしないと、コンパイルしようとしたときに次のエラーメッセージが表示されます。

'ZipFile'という名前は現在のコンテキストには存在しません。

Visual Studioでプロジェクトに参照を追加する方法の詳細については、 方法:参照マネージャーを使用して参照を追加または削除する を参照してください。

ZipFileクラスはSystem.IO.Compressionを使用するだけでは協力しないことがわかり、System.IO.Compression.FileSystemへの参照を確認するように求められました。

Visual Basicを使用している場合、参照の追加は非常に簡単です。ソリューションエクスプローラーでは、プロジェクトの下にあるタブの1つが参照と呼ばれます。そこで右クリックして、参照の追加を選択します。少し下にスクロールして、System.IO.Compression.FileSystemの横にあるチェックボックスをオンにします。 [〜#〜] ok [〜#〜]をクリックすると、コードでSystem.IO.Compression.FileSystemを明示的に参照する必要さえありません。 !!

幸運を (:

2
m4gg13

更新のみ:-

。Net 4.6.1バージョンの場合

System.IO.Compression.FileSystemおよびusing System.IO.Compressionへの参照を追加するだけで十分です。

using System.IO.Compression.FileSystemは以下のエラーを出します。

Reference error

1
Ashok