عنوان:

‫پکیج‌های دانلود شده در کدام مسیر قرار دارند؟


نویسنده: هادی مزارعی
تاریخ: ۱۴۰۴/۱۰/۰۱ ۱۹:۱۰
آدرس: www.dntips.ir
در طول انجام پروژه‌های مختلف که پکیج‌های متعدد به همراه وابستگی‌های آن‌ها دانلود می‌شوند در کدام مسیر قرار دارند؟ در صورتی که از پوشه بصورت zip و یا rar یک پشتیبان تهیه کنم آیا پس از تعویض ویندوز امکان استفاده از آن وجود دارد؟

نظرات

  • وحید نصیری در ۱۴۰۴/۱۰/۰۱ ۲۰:۲۹
    پکیج‌های NuGet در پروژه‌های .NET معمولاً در یک کش سراسری (global cache) ذخیره می‌شوند تا از دانلود مجدد جلوگیری شود. مسیر پیش‌فرض این کش در ویندوز به صورت زیر است:
    • مسیر اصلی کش سراسری پکیج‌ها: %userprofile%\.nuget\packages (که معمولاً معادل C:\Users\YourUsername\.nuget\packages است). این پوشه حاوی تمام پکیج‌های دانلودشده به همراه وابستگی‌هایشان است و برای تمام پروژه‌ها در سیستم شما به اشتراک گذاشته می‌شود.
    • کش HTTP (برای جلوگیری از دانلود مجدد از اینترنت): %localappdata%\NuGet\v3-cache (برای نسخه‌های جدیدتر NuGet).
    • پوشه موقت: %temp%\NuGetScratch (برای عملیات موقتی).
    در پروژه‌های قدیمی‌تر (با فایل packages.config)، پکیج‌ها ممکن است در پوشه packages داخل ریشه پروژه نیز کپی شوند، اما در پروژه‌های مدرن .NET Core/.NET 5+، عمدتاً از کش سراسری استفاده می‌شود و دستور dotnet restore یا nuget restore پکیج‌ها را از این کش لود می‌کند اگر موجود باشند.
    برای مشاهده دقیق مسیرها در سیستم خود، می‌توانید از دستور زیر در خط فرمان استفاده کنید:
    dotnet nuget locals all --list
    این دستور تمام پوشه‌های مرتبط با NuGet را لیست می‌کند.

    در مورد پشتیبان‌گیری از پوشه به صورت ZIP یا RAR: بله، امکان‌پذیر است. اگر پوشه .nuget (به ویژه زیرپوشه packages) را پشتیبان بگیرید و پس از تعویض ویندوز، آن را در مسیر مشابه (%userprofile%\.nuget) کپی کنید، NuGet می‌تواند از آن استفاده کند و پکیج‌ها را بدون دانلود مجدد restore کند. این روش برای سناریوهای آفلاین مفید است.
    چند نکته‌:
    • مطمئن شوید که کاربر ویندوز جدید همان نام کاربری (Username) را دارد، یا مسیر را دستی تنظیم کنید.
    • اگر مسیر تغییر کند، می‌توانید از متغیر محیطی NUGET_PACKAGES برای اشاره به مکان پشتیبان استفاده کنید (مثلاً set NUGET_PACKAGES=C:\Path\To\Your\Backup\packages).
    • NuGet به طور خودکار پکیج‌های از دست رفته را دانلود می‌کند، پس پشتیبان‌گیری ضروری نیست اما برای صرفه‌جویی در زمان و پهنای باند مفید است.
    • اگر مشکلی پیش آمد، می‌توانید کش را پاک کنید با dotnet nuget locals all --clear و سپس restore کنید.
    • علی یگانه مقدم در ۱۴۰۴/۱۰/۰۲ ۱۸:۵۳
      من یک پروژه رو هر از گاهی بعد از تغییرات یک بیلد میگیرم و مدت هاست دیگر کتابخانه جدیدی هم به آن اضافه نکردم و بیشتر تغییرات روی امکانات آن سیستم هست ولی همچنان در اکثر اوقات برای بیلد کردن باید پروکسی چیزی فعال باشد تا عملیات جلو برود وگرنه دستور build روی اولین خط ها همچنان میماند و فقط زمان گذشت را محاسبه میکند.
      • بالازاده در ۱۴۰۴/۱۰/۰۲ ۱۹:۰۰
        آیا در تنظیمات ویژوال استودیو گزینه Automatically check for missing packages during build in Visual Studio فعال هست؟ شاید غیرفعال کردن آن به کاهش مدت زمان بیلد کمک کند.
        این مشکل به دلیل کیفیت و نوع خاص اینترنت ما هست. همانطور که گفتید در صورت نیاز به بازیابی، چه در زمان اجرای اولیه پروژه در Visual Studio و چه در زمان بیلدها، ما این مشکل را داشتیم و فقط با فعال بودن تغییردهنده‌ی ارتباط اینترنتی این مرحله رد می‌شد.
        • علی یگانه مقدم در ۱۴۰۴/۱۰/۰۲ ۲۰:۲۵
          از رایدر استفاده میکنم. پروژه دات نت 6 هست ولی دستور بیلد رو هم از طریق CLI میزنم. مگر تنظیم در سطح فایل های csproj باشه یا اینکه در تنظیمات nuget
          • بالازاده در ۱۴۰۴/۱۰/۰۳ ۰۷:۳۵
            بر طبق مطلبی که اینجا بیان شده دستور dotnet restore به طور ضمنی توسط دستوراتی که نیاز به بازیابی دارند مانند dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish, dotnet pack اجرا می‌شود.
            برای غیرفعال کردن آن از گزینه ‎--no-restore استفاده کنید.
          • وحید نصیری در ۱۴۰۴/۱۰/۰۳ ۰۹:۲۲
            برای کار با سرور نیوگت، گاهی نیاز است دستور ipconfig /flushdns را در خط فرمان، اجرا کنید تا کش محلی اطلاعات DNS Server ای که در حال استفاده از آن هستید، غیرمعتبر شده و مجددا توسط سیستم دریافت شود (برای مثال بررسی کنید آیا دستور ping api.nuget.org -t خروجی می‌دهد؟ آیا می‌توانید به سرور نیوگت متصل شوید). همچنین Rider در چند نگارش اخیر آن با NuGet مشکل داشت. حتما از آخرین نگارش آن استفاده کنید.
      • وحید نصیری در ۱۴۰۴/۱۰/۰۲ ۱۹:۰۸