عنوان:

‫ایجاد بیلدهای تکرارپذیر با global.json


نویسنده: وحید نصیری
تاریخ: ۱۴۰۳/۱۱/۳۰ ۰۷:۳۷
آدرس: www.dntips.ir
این مقاله به بررسی چالش‌های حفظ بیلدهای سازگار در محیط‌های توسعه‌ی مختلف و چگونگی کمک global.json به حل این مشکلات می‌پردازد.

مشکلات نسخه‌های ناپایدار SDK

  • خطاهای کامپایل: اگر توسعه‌دهندگان از نسخه‌های مختلف SDK .NET استفاده کنند، کدی که نسخه‌ی خاصی را هدف قرار می‌دهد، ممکن است روی دستگاه‌هایی که فاقد آن نسخه هستند، کامپایل نشود.
  • باگ‌های ظریف: حتی اگر کامپایل با زیرنسخه‌های مختلف SDK موفقیت‌آمیز باشد، فایل‌های باینری حاصل می‌توانند به دلیل رفع اشکال و تغییر رفتار بین نسخه‌های SDK متفاوت باشند. این می‌تواند منجر به ناهماهنگی‌هایی مانند تست‌هایی شود که روی برخی از دستگاه‌ها قبول می‌شوند اما روی برخی دیگر رد می‌شوند.
  • بازسازی نسخه‌های قدیمی: بازسازی کد قدیمی، به SDK قدیمی مربوطه نیاز دارد که ممکن است به راحتی در دسترس نباشد.

راه حل: global.json

فایل global.json که در ریشه‌ی پروژه یا راه‌حل قرار می‌گیرد، نسخه‌ی SDK مورد استفاده‌ی برای بیلد را مشخص می‌کند. این امر، بیلدهای سازگار را در دستگاه‌های توسعه‌دهنده‌ی مختلف تضمین می‌کند و بازسازی نسخه‌های قدیمی را ساده‌تر می‌کند.
  • ایجاد: می‌توان آن را به صورت دستی یا با استفاده از دستور dotnet new globaljson یا dotnet new global.json ایجاد کرد.
    • ویژگی‌ها: version: نسخه‌ی SDK مورد نظر را مشخص می‌کند. از dotnet --list-sdks برای دیدن نسخه‌های موجود استفاده کنید.
    • rollForward: نحوه‌ی رفتار کامپایلر را در صورت یافتن نسخه‌ی SDK جدیدتر تعریف می‌کند. گزینه‌های آن عبارتند از:
      • disable: مطابقت دقیق با نسخه‌ی مورد نیاز است.
      • latestMajor: از آخرین نسخه‌ی اصلی نصب شده استفاده می‌کند (به عنوان مثال، اگر 9.0.200 مشخص شده باشد، در صورت وجود، از 10xx استفاده می‌شود).
      • latestMinor: از آخرین نسخه‌ی فرعی نصب شده استفاده می‌کند (به عنوان مثال، اگر 9.0.200 مشخص شده باشد، در صورت وجود از 9.1x استفاده می‌شود).
      • latestFeature: از آخرین نسخه‌ی ویژگی نصب شده استفاده می‌کند (به عنوان مثال، اگر 9.0.200 مشخص شده باشد، در صورت وجود از 9.0.300 استفاده می‌شود).
      • latestPatch: از آخرین نسخه‌ی پچ نصب شده، استفاده می‌کند (به عنوان مثال، اگر 9.0.200 مشخص شده باشد، در صورت وجود از 9.0.201 استفاده می‌شود).
    • allowPrerelease: کنترل می‌کند که آیا نسخه‌های پیش انتشار SDK می‌توانند استفاده شوند یا خیر.

مزایا

  • بیلدهای تکرارپذیر: تضمین می‌کند که همه‌ی توسعه‌دهندگان از یک نسخه‌ی SDK استفاده می‌کنند و ناهماهنگی‌ها را از بین می‌برد.
  • مدیریت ساده‌تر نسخه: کار با پروژه‌های متعدد که نسخه‌های مختلف SDK را هدف قرار می‌دهند، آسان‌تر می‌کند.
  • بازسازی آسان‌تر کدهای قدیمی: امکان تعیین دقیق نسخه‌ی SDK مورد نیاز برای نسخه‌های قدیمی را فراهم می‌کند.



مشاهده مطلب اصلی