"System.IO.Compression" নেমস্পেসে আমি "জিপফায়ার" ক্লাসটি পাইনি


111

আমি "জিপফায়ার" ক্লাসটি নাম "স্পেসিটি.আইও.কম্প্রেশন" নামে ব্যবহার করতে পারি না আমার কোডটি হ'ল:

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string startPath = @"c:\example\start";
            string zipPath = @"c:\example\result.zip";
            string extractPath = @"c:\example\extract";

            ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest,true);

            ZipFile.ExtractToDirectory(zipPath, extractPath);
        }
    }
}

ত্রুটিটি হ'ল:

'জিপফাইলে' নামটি বর্তমান প্রসঙ্গে নেই

আমি কীভাবে এটি সমাধান করতে পারি?


রিক স্ট্রহলের দেখুন। নেট 4.5 এ। নেট 4.0
জেরি লওরি

উত্তর:


212

এর জন্য আপনার অতিরিক্ত রেফারেন্স দরকার; এটি করার সবচেয়ে সুবিধাজনক উপায় হ'ল নুগেট প্যাকেজ সিস্টেম.আইও.কম্প্রেশন.জাইপ ফাইলের মাধ্যমে

<!-- Version here correct at time of writing, but please check for latest -->
<PackageReference Include="System.IO.Compression.ZipFile" Version="4.3.0" />

আপনি যদি নুগেট ব্যতীত নেট নেট ফ্রেমওয়ার্কে কাজ করে থাকেন তবে আপনাকে অ্যাসেমব্লিকে "সিস্টেম.আইও.কম্পেশন.ফাইসিসটেম.ডিল" - তে একটি dll রেফারেন্স যুক্ত করতে হবে এবং নিশ্চিত করুন যে আপনি কমপক্ষে .NET 4.5 ব্যবহার করছেন (যেহেতু এটি না পূর্ববর্তী ফ্রেমওয়ার্কগুলিতে বিদ্যমান)।

তথ্যের জন্য, আপনি এমএসডিএন থেকে সমাবেশ এবং .NET সংস্করণ (গুলি) খুঁজে পেতে পারেন find


2
আমি .NET 4.0 ব্যবহার করছি ... এবং আমি এই dll ফাইলটি খুঁজে পাই নি
মোহাম্মদ কামাল

17
@ মোহাম্মদকামাল প্রকৃতপক্ষে, আপনি .NET 4.5 ব্যবহার না করে আপনি করবেন না, যেহেতু এটি তখন পর্যন্ত উপস্থিত ছিল না; "সংস্করণ তথ্য" তথ্য দেখুন - "সমর্থিত: 4.5"
মার্ক গ্রেভেল

1
@ মার্কগ্রাভেল আমারও একই ত্রুটি রয়েছে। আমি ভিজ্যুয়াল স্টুডিও -> সহায়তা -> মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও সম্পর্কে যাচাই করেছিলাম, এটি .NET সংস্করণ 4.5.51650 দিয়ে দেখায়। আমার আর কি পরীক্ষা করা উচিত?
ফক্সওয়েন্ডি

4
আমার FileSystemরেফারেন্স ছিল না । শুধু System.IO.Compression। ধন্যবাদ। অদ্ভুত যে এটির জন্য এমন কোনও ফাইলের প্রয়োজন যা শ্রেণীর নামপৃষ্ঠে নেই। এটি কনভেনশন থেকে অদ্ভুত বিচ্যুতি।
ক্রিস বেনার্ড

3
@ ক্রিসবারার্ড আমি একই সমস্যাটি পেয়েছি। System.IO.Compression এর উল্লেখ সহ যথেষ্ট ছিল না, আমার পাশাপাশি ফাইলসিস্টেমও দরকার ছিল। সত্যিই আকর্ষণীয়।
dckuehn

32

.NET- এ যারা সবুজ প্রোগ্রামার, তাদের জন্য DLL রেফারেন্স যুক্ত করার জন্য মার্কগ্রাভেল উল্লেখ করেছেন, আপনি এই পদক্ষেপগুলি অনুসরণ করেন:

ভিজ্যুয়াল সি # তে একটি রেফারেন্স যুক্ত করতে

  1. সলিউশন এক্সপ্লোরারে, প্রজেক্ট নোডটিতে ডান ক্লিক করুন এবং রেফারেন্স যুক্ত করুন ক্লিক করুন।
  2. রেফারেন্স যোগ করুন ডায়ালগ বাক্সে, আপনি যে উপাদানটির উল্লেখ করতে চান তা নির্দেশ করে ট্যাবটি নির্বাচন করুন।
  3. আপনি যে উপাদানগুলি উল্লেখ করতে চান তা নির্বাচন করুন এবং তারপরে ওকে ক্লিক করুন।

এমএসডিএন নিবন্ধ থেকে, কীভাবে: অ্যাড রেফারেন্স ডায়ালগ বক্স ব্যবহার করে রেফারেন্সগুলি যুক্ত বা সরান


1
তথ্যের জন্য ধন্যবাদ। আমি ইতিমধ্যে System.IO.Compression ব্যবহার করেছি; তবে তারপরে জিপিফাইলে ওপি'র আসল ত্রুটি ছাড়াই সংকলন করার জন্য আপনি উপরে বর্ণিত System.IO.Compression.FileSystem ব্যবহার করার জন্য একটি রেফারেন্স যুক্ত করতে হয়েছিল।
হিউ সিগ্রাভস

17

আপনি 4.5 এ আপগ্রেড করতে না পারলে আপনি একটি বাহ্যিক প্যাকেজ ব্যবহার করতে পারেন। এর মধ্যে একটি হ'ল ডটনেটজিপলিব থেকে আয়নিক.জপ.ডিএল।

using Ionic.Zip;

আপনি এটি এখানে বিনামূল্যে ডাউনলোড করতে পারেন। http://dotnetzip.codeplex.com/


3
বা এটিকে
নুগেটের

2
এটি প্রশ্নের সাথে কীভাবে প্রাসঙ্গিক?
ইউজেনেকগ্ন

20
তার প্রশ্ন ছিল "আমি কীভাবে এটি ঠিক করব?" এবং এটি ঠিক করার এক উপায় এটি - যেহেতু তার নেট সংস্করণটি এটি সমর্থন করে না।
জন ফকনার ২

4
দুঃখের বিষয়, আপগ্রেড কখনও কখনও পছন্দ হয় না। একটি upvote আছে।
সংপাথ্রিস

1
এটি প্রাসঙ্গিক যদি আপনি 2000 পিসিগুলিতে লিখছেন যা এক্সপি ইনস্টল করা আছে এবং আপনার প্রোগ্রামটি কোনও ইনস্টলেশন করতে পারে না (.net 4.5 ফ্রেমওয়ার্ক ইনস্টল করতে)
মুকুস

10

কেবলমাত্র রেফারেন্সে যান এবং "System.IO.Compression.FileSystem" যুক্ত করুন।


"রেফারেন্স" সন্ধানের জন্য আমার কাছে সীমাহীন জায়গা রয়েছে। এটি কোথায় পাওয়া যাবে সে সম্পর্কে আপনি আরও ইঙ্গিত দিতে পারেন?
ড্যানিয়েল ক্যাপলান

2

একটি সমাধান যা আমাকে সহায়তা করেছে: সরঞ্জামগুলিতে যান> নুগেট প্যাকেজ ম্যানেজার> সমাধানের জন্য নিউগেট প্যাকেজড পরিচালনা করুন ...> ব্রাউজ করুন> সিস্টেমের জন্য অনুসন্ধান করুন Iও.কম্পেশন.জাইপ ফাইল এবং এটি ইনস্টল করুন


1

আমি জানি এটি একটি পুরানো থ্রেড, তবে আমি এই বিষয়ে কিছু দরকারী তথ্য পোস্ট করা থেকে দূরে থাকতে পারি না। আমি জিপ প্রশ্নটি অনেক উপরে উঠতে দেখছি এবং এটি প্রায় সাধারণ প্রশ্নের বেশিরভাগ উত্তর দেয়।

৪.৫ + ব্যবহারের কাঠামোগত সমস্যাগুলি সম্পর্কে জানতে ... এটি হ'ল জাইপ-অলিভারেস দ্বারা নির্মিত একটি জিপস্টোরার শ্রেণি: https://github.com/jaime-olivares/zipstorer , তিনি এই শ্রেণিটি কীভাবে ব্যবহার করবেন তার একটি উদাহরণ যোগ করেছেন ভাল এবং পাশাপাশি একটি নির্দিষ্ট ফাইলের নাম কীভাবে অনুসন্ধান করতে হবে তার একটি উদাহরণও যুক্ত করেছে।

এবং এটি কীভাবে ব্যবহার করতে হয় এবং নির্দিষ্ট ফাইল এক্সটেনশনের মাধ্যমে পুনরাবৃত্তি করার জন্য উদাহরণ হিসাবে আপনি এটি করতে পারেন:

#region
/// <summary>
/// Custom Method - Check if 'string' has '.png' or '.PNG' extension.
/// </summary>
static bool HasPNGExtension(string filename)
{
    return Path.GetExtension(filename).Equals(".png", StringComparison.InvariantCultureIgnoreCase)
        || Path.GetExtension(filename).Equals(".PNG", StringComparison.InvariantCultureIgnoreCase);
}
#endregion

private void button1_Click(object sender, EventArgs e)
{
    //NOTE: I recommend you add path checking first here, added the below as example ONLY.
    string ZIPfileLocationHere = @"C:\Users\Name\Desktop\test.zip";
    string EXTRACTIONLocationHere = @"C:\Users\Name\Desktop";

    //Opens existing zip file.
    ZipStorer zip = ZipStorer.Open(ZIPfileLocationHere, FileAccess.Read);

    //Read all directory contents.
    List<ZipStorer.ZipFileEntry> dir = zip.ReadCentralDir();

    foreach (ZipStorer.ZipFileEntry entry in dir)
    {
        try
        {
            //If the files in the zip are "*.png or *.PNG" extract them.
            string path = Path.Combine(EXTRACTIONLocationHere, (entry.FilenameInZip));
            if (HasPNGExtension(path))
            {
                //Extract the file.
                zip.ExtractFile(entry, path);
            }
        }
        catch (InvalidDataException)
        {
            MessageBox.Show("Error: The ZIP file is invalid or corrupted");
            continue;
        }
        catch
        {
            MessageBox.Show("Error: An unknown error ocurred while processing the ZIP file.");
            continue;
        }
    }
    zip.Close();
}



0

সমাধান এক্সপ্লোরারগুলিতে, রেফারেন্সগুলিতে ডান ক্লিক করুন, তারপরে সমাবেশগুলি প্রসারণ করতে ক্লিক করুন, System.IO.Compression.FileSystem সন্ধান করুন এবং এটি পরীক্ষা করা হয়েছে তা নিশ্চিত করুন। তারপরে আপনি এটিকে আপনার ক্লাসে ব্যবহার করতে পারেন -using System.IO.Compression;

রেফারেন্স সমাবেশ স্ক্রিনশট যুক্ত করুন


0

এখানে সমস্যাটি হ'ল আপনি কেবলমাত্র System.IO.Compression এ রেফারেন্স যুক্ত করেছেন System

এবং আপনার এটি নেট .৪.৪ বা তারপরেই করা দরকার (কারণ এটি পুরানো সংস্করণে বিদ্যমান নেই)।

আমি সবেমাত্র টেকনেটে একটি স্ক্রিপ্ট পোস্ট করেছি কারওর কাছে এটি দরকারী মনে হতে পারে যার জন্য নেট নেট 4.5 বা 4.7 প্রয়োজন

https://gallery.technet.microsoft.com/scriptcenter/Create-a-Zip-file-from-a-b23a7530

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.