عنوان:

‫غیرفعال کردن اسمبلی‌های ماهواره‌ای محلی‌سازی شده در هنگام انتشار برنامه‌های دات‌نت


نویسنده: وحید نصیری
تاریخ: ۱۴۰۳/۱۲/۰۸ ۱۰:۰۳
آدرس: www.dntips.ir
مشکل: برنامه‌های دات‌نت می‌توانند اسمبلی‌های منبع "ماهواره‌ای" محلی‌سازی شده را برای فرهنگ‌های مختلف شامل شوند که اندازه‌ی خروجی انتشار را به طور قابل توجهی افزایش می‌دهد. اگر برنامه فقط یک فرهنگ یا فرهنگ ثابت را هدف قرار دهد، این اسمبلی‌ها ممکن است غیرضروری باشند.

اسمبلی‌های ماهواره‌ای چه هستند؟ شامل منابع خاص فرهنگ (به عنوان مثال، پیام‌های خطای محلی‌سازی شده) هستند و با نام ".resources.dll" نامگذاری شده و در پوشه‌های خاص فرهنگ قرار می‌گیرند.

روش غیرموثر: حالت ثابت جهانی‌سازی ویژگی InvariantGlobalization از کپی شدن اسمبلی‌های ماهواره‌ای در هنگام انتشار جلوگیری نمی‌کند. این یک ویژگی زمان اجرا است، نه یک ویژگی ساخت/انتشار.

راه حل موثر: ویژگی SatelliteResourceLanguagesیک لیست جدا شده با نقطه ویرگول از فرهنگ‌هایی را که باید در خروجی انتشار گنجانده شوند، مشخص می‌کند.
  • مثال: <SatelliteResourceLanguages>es;fr</SatelliteResourceLanguages> منابع اسپانیایی و فرانسوی را شامل می‌شود.
  • <SatelliteResourceLanguages>en</SatelliteResourceLanguages> هیچ منبع خاص فرهنگی را شامل نمی‌شود.

نکات کلیدی: این ویژگی را به پروژه‌ای اضافه کنید که مستقیماً به بسته‌ی NuGet حاوی منابع ارجاع می‌دهد.
    • نام فرهنگ‌ها را دقیقاً همانطور که در ساختار پوشه‌ی بسته ظاهر می‌شوند، مشخص کنید.
    • اگر فرهنگ غلط املایی داشته باشد، یا وجود نداشته باشد، هیچ خطایی ایجاد نمی‌شود، و هیچ اسمبلی ماهواره ای کپی نمی‌شود.
    • Directory.Build.props می‌تواند برای تنظیم این ویژگی برای همه پروژه‌های موجود در یک راه‌حل (solution)، استفاده شود.



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