توسعهدهندگان داتنت در ایران برای دریافت سریع و پایدار پکیجها میتوانند از میرور NuGet در ایران استفاده کنند. این میرورها با فراهم کردن دسترسی داخلی به بستههای NuGet، مشکلاتی مانند اختلال اینترنت بینالملل، خطای Timeout و شکست فرآیند Restore را کاهش میدهند. استفاده از میرورهای داخلی NuGet برای تیمهای توسعه نرمافزار، پروژههای سازمانی و خطوط CI/CD راهکاری کاربردی برای تداوم توسعه است.
توسعهدهندگان پلتفرم داتنت در ایران، بهویژه آنهایی که در حوزههای تخصصی طراحی و توسعه سامانههای تحت وب فعالیت میکنند، همواره با چالشهای جدی در دسترسی به منابع جهانی مانند NuGet.org مواجه هستند. در شرایطی که شبکه اینترنت بینالملل با اختلال یا محدودیت روبرو میشود، پروژه شما نباید به دلیل عدم امکان بازیابی یا Restore کردن پکیجها متوقف شود. استفاده از میرورهای داخلی (Internal Mirrors) بهترین راهکار فنی برای دور زدن این محدودیتها و حفظ سرعت توسعه نرمافزار است.
مدیریت وابستگیها یا همان Dependencies در داتنت، ستون فقرات هر پروژهای محسوب میشود. زمانی که شما از پکیجهای کتابخانهای استفاده میکنید، سیستم ابزاری NuGet وظیفه دارد فایلهای باینری مورد نیاز را از مخازن آنلاین دریافت کند. در شرایط قطع دسترسی، جایگزینی این مخازن با آینههای داخلی که توسط جامعه توسعهدهندگان ایرانی فراهم شده، نه تنها یک انتخاب هوشمندانه، بلکه یک ضرورت برای تداوم پروژههای تجاری است.
برای شرکتهایی که در زمینه ارائه خدمات برنامهنویسی و توسعه نرمافزار فعالیت میکنند، پایداری خطوط تولید و بیلد (Build Pipelines) اهمیت حیاتی دارد. وقتی یک سرور CI/CD در محیطی ایزوله یا در شبکه داخلی (LAN) قرار دارد، تلاش برای اتصال مستقیم به NuGet.org میتواند منجر به تایماوتهای طولانی، شکست در بیلد پروژه و اتلاف وقت ارزشمند تیم فنی شود. این مشکل صرفاً محدود به کدهای جدید نیست؛ حتی برای پروژههای قدیمی، بازسازی محیط توسعه نیازمند اتصال به یک مخزن معتبر است.
مفهوم میرور یا آینه در دنیای مدیریت بستهها، به معنای کپی کردن محتویات یک مخزن اصلی در یک سرور داخلی است. این سرورها با همگامسازی مداوم با مخزن اصلی، تمام بستههای مورد نیاز را در اختیارتان قرار میدهند. استفاده از این ابزارها در کنار تکنیکهایی که در فرآیند طراحی و توسعه افزونههای وردپرس یا سایر سیستمهای ماژولار استفاده میشود، به توسعهدهنده اجازه میدهد که بدون درگیری با پیچیدگیهای شبکه، تمام تمرکز خود را روی منطق برنامه بگذارد.
استفاده از آینههای داخلی NuGet، ریسک وابستگی به پایداری اینترنت بینالملل را به حداقل رسانده و بهرهوری تیمهای فنی را در شرایط بحرانی حفظ میکند.
برای شروع استفاده از این میرورها، اولین قدم ایجاد یک فایل کانفیگ اختصاصی در پروژه است. فایل nuget.config به شما این امکان را میدهد که اولویت منابع خود را تعیین کنید. ساختار این فایل باید بهگونهای باشد که سیستم ابتدا کش محلی را چک کرده و سپس به سراغ میرورهای داخلی برود.
در پروژههای حرفهای، توصیه میشود فایلی با محتوای زیر در ریشه پروژه قرار گیرد تا تمام اعضای تیم از یک منبع استاندارد استفاده کنند:
| نام منبع (Key) | آدرس مخزن (Value) | مرجع رسمی |
|---|---|---|
| ChabokMirror | https://mirror2.chabokan.net/nuget/v3/index.json |
iran.chabokan.net |
| DevNeeds | https://nuget.devneeds.ir/repository/nuget/index.json |
devneeds.ir |
| ParspackMirror | https://mirror.abrha.net/repository/nuget/index.json |
docs.parspack.com |
| RunFlare | https://mirror-nuget.runflare.com/v3/index.json |
runflare.com/mirrors |
| Liara | https://package-mirror.liara.ir/repository/nuget/index.json |
docs.liara.ir/mirrors/nuget |
| Hamravesh | https://repo.hmirror.ir/nuget |
hamravesh.com/blog |
| IranServer | https://nuget.iranserver.com/repository/nuget/index.json |
mirror.iranserver.com |
| NugetIran | https://repo.nugetiran.ir/repository/nuget/index.json |
nugetiran.ir |
نمونه ساختار فایل nuget.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="ChabokMirror" value="https://mirror2.chabokan.net/nuget/v3/index.json" />
<add key="DevNeeds" value="https://nuget.devneeds.ir/repository/nuget/index.json" />
<add key="ParspackMirror" value="https://mirror.abrha.net/repository/nuget/index.json" />
<add key="RunFlare" value="https://mirror-nuget.runflare.com/v3/index.json" />
<add key="Liara" value="https://package-mirror.liara.ir/repository/nuget/index.json" />
<add key="Hamravesh" value="https://repo.hmirror.ir/nuget" />
<add key="IranServer" value="https://nuget.iranserver.com/repository/nuget/index.json" />
<add key="NugetIran" value="https://repo.nugetiran.ir/repository/nuget/index.json" />
</packageSources>
</configuration>
تکیه بر رابط کاربری گرافیکی Visual Studio همیشه کارساز نیست؛ بهویژه زمانی که با خطاهای پیچیده شبکه روبرو هستید. استفاده از خط فرمان (CLI) به شما اجازه میدهد تا با استفاده از پارامترهای خاص، فرآیند بازیابی پکیجها را مدیریت کنید. بهعنوان مثال، اگر در تیم خود مشغول طراحی بازی کامپیوتری هستید و نیاز دارید پکیجهای سنگین موتور بازیسازی را Restore کنید، دستور زیر برای شما نجاتبخش خواهد بود:
dotnet restore --ignore-failed-sources -v diag
این دستور به سیستم بیلد اعلام میکند که در صورت عدم دسترسی به یکی از منابع (مثلاً تایماوت شدن یک میرور خاص)، فرآیند بیلد را متوقف نکرده و به سراغ سایر منابع تعریفشده برود. این قابلیت در محیطهای CI/CD که پایداری شبکه در آنها صددرصدی نیست، بسیار حیاتی است.
تکرار مداوم تنظیمات در تکتک پروژهها احتمال خطای انسانی را بالا میبرد. برای مدیریت یکپارچه تنظیمات، میتوانید از فایل Directory.Build.props در ریشه اصلی پروژه استفاده کنید تا کانفیگها به تمام زیرپروژهها (Sub-projects) ارثبری شوند. این مکانیزم مدیریت متمرکز، درست مشابه منطق بهکاررفته در نرمافزار مدیریت باشگاه ورزشی است که در آن تنظیمات پایهای یکبار تعریف شده و در سراسر بخشهای سیستم اعمال میشوند.
علاوه بر تنظیمات اصلی، غیرفعال کردن موقت فرآیند NuGet Audit نیز میتواند سرعت عملیات Restore را در شبکه داخلی به شکل چشمگیری افزایش دهد. در برخی سناریوها، بررسی امنیت پکیجها نیاز به اتصال به سرورهای مرجع مایکروسافت دارد که در نبود اینترنت بینالملل فرآیند را کند میکند. با تنظیم متغیر محیطی NuGetAudit روی مقدار false، این گلوگاه را برطرف کنید.
بهینهسازی تنظیمات در سطوح کلان پروژه، نه تنها سرعت توسعه را افزایش میدهد، بلکه باعث یکپارچگی محیط کاری اعضای تیم در پروژههای بزرگ میشود.
بسیاری از توسعهدهندگان فراموش میکنند که ابزارهای خط فرمان پرکاربرد مانند dotnet-ef یا Swashbuckle نیز برای کارکرد درست نیاز به آپدیت دارند. در هنگام قطعی اینترنت، نباید این ابزارها نادیده گرفته شوند. با اضافه کردن پارامتر --add-source در زمان نصب یا آپدیت ابزارها، میتوانید مستقیماً آدرس میرورهای داخلی را معرفی کرده و نیازی به دسترسی به سرورهای مرجع جهانی نداشته باشید.
همچنین اگر تمایل دارید به صورت بصری و گامبهگام با این تنظیمات در سیستمعاملهای ویندوز و لینوکس آشنا شوید، تماشای ویدئوهای آموزشی تهیه شده توسط متخصصین داخلی بسیار مفید خواهد بود. ویدئوهای منتشر شده در پلتفرم آپارات درباره پیکربندی آینههای نیوگت، راهنمایی عالی در کنار این مستندات متنی هستند.
برای مدیریت موفقیتآمیز پکیجها و وابستگیهای داتنت در شرایط محدودیت شبکه، موارد زیر را مد نظر داشته باشید:
nuget.config را در ریشه اصلی مخزن کد (Repository) قرار دهید.<clear /> از تلاش بیهوده سیستم برای فراخوانی پکیجسورهای پیشفرض و مسدودشده جلوگیری کنید.--ignore-failed-sources اجرا کنید تا پایداری فرآیند بیلد تضمین شود.Directory.Build.props متمرکز کنید.دنیای توسعه نرمافزار در ایران، به دلیل شرایط خاص زیرساختی، نیازمند انعطافپذیری و دانش فنی بالاتری نسبت به سایر نقاط جهان است. بهرهگیری از میرورهای NuGet نه تنها یک ترفند فنی، بلکه بخشی از استراتژی بقای پروژههای نرمافزاری است. با استفاده از لیست مخازن معتبری که معرفی شد، میتوانید محیط توسعه خود را در برابر نوسانات اینترنت واکسینه کنید.
اگر مدیریت یک پروژه نرمافزاری بزرگ را بر عهده دارید، پیشنهاد میشود همین امروز فرآیند بیلد و CI/CD خود را بر پایه این تنظیمات بازنگری کنید. همچنین برای تیمهایی که در کنار بکاندهای قدرتمند داتنت، به کار ساخت اپلیکیشن موبایل مشغول هستند، پیادهسازی این پیکربندیها سرعت عمل و دقت تیم توسعه بکاند را برای ارائه خروجیهای پایدار به حداکثر خواهد رساند.
منبع مستندات: پروژه آینههای داخلی نیوگت در گیتهاب (aliram-ir/nuget-iran-mirrors)
مشاهده ویدئوی آموزشی: جایگزینهای کاربردی NuGet در زمان اختلال اینترنت
با استفاده از میرورهای داخلی NuGet در ایران، پروژههای داتنت خود را در زمان اختلال اینترنت بینالملل بدون توقف توسعه دهید. راهنمای کامل تنظیمات nuget.config
مشاوره و پشتیبانی
مشاوره و پشتیبانی