مطالب
خواندنی‌های 8 مرداد
مطالب
به‌روز رسانی اسمبلی‌های خارجی
در اکثر شرکت‌های بزرگ و متوسط نرم افزاری، بخش مشترکی از پروژه‌ها تحت عنوان فریم ورک و یا پروژه‌های مشترک (Common) از پروژه‌های جاری فاکتور گرفته میشود و ارتباط با آنها با ارجاعی (Reference) به اسمبلی آنها انجام مشود.
اما مشکل همیشگی این است که برای حفظ استقلال، مستقیما از پروژه‌های جاری به اسمبلی‌های پایه ارجاع داده نمی‌شود؛ چون ممکن است بنا بر پایسته بودن نسخه پروژه جاری، قصد نداشته باشیم همیشه آخرین ورژن اسمبلی‌های خارجی را دریافت کنیم، بلکه ارجاعی به اسمبلی‌ها در یک پوشه در خود پروژه انجام میشود و شما بعد از هر بار تغییر در فریم ورک، باید اسمبلی‌های جدید را به داخل پوشه، در تک تک پروژه‌های جاری تان کپی کنید.
برای خلاصی از این کار مدام و تکراری می‌توانید از یک Batch فایل شبیه کد زیر استفاده کنید:
xcopy /s /y D:\Project\Framework\Framework.Web\bin\Debug\Framework.dll D:\Project\Current\DependentDLL
xcopy /s /y D:\Project\Framework\Framework.Web\bin\Debug\Framework.Common.dll D:\Project\Current\DependentDLL
xcopy /s /y D:\Project\Framework\Framework.Web\bin\Debug\Framework.Business.dll D:\Project\Current\DependentDLL
xcopy /s /y D:\Project\Framework\Framework.Web\bin\Debug\Framework.Web.dll D:\Project\Current\DependentDLL
کافی است این دستورات را در Note Pad کپی کنید و سپس با پسوند bat و مثلا با نام Update ذخیره کنید.
این فایل را در پوشه اسمبلی‌های وابسته در پروژه‌های جاری تان کپی کنید و از این به بعد هر وقت خواستید آخرین ورژن اسمبلی‌های خارجی را دریافت کنید دوبار روی این فایل کلیک کنید.
برای شخصی سازی بیشتر دستورات انتقال فایل در Batch فایل‌ها   اینجا  و  اینجا   را بخوانید.
بازخوردهای دوره
ایجاد یک کلاس جدید پویا و وهله‌ای از آن در زمان اجرا توسط Reflection.Emit
- وهله شیء تولیدی شما از نوع object است. آن‌را به لیست اضافه کنید و استفاده نمائید.
+ نوع جنریک در دات نت پویا نیست و نمی‌شود آن را به صورت یک متغیر تعریف کرد. مثلا حالت زیر مجاز نیست:
var myType = typeof(something);
List<myType> list = new List<myType>();
علت هم این است که هدف از نوع جنریک، compile time safety است و زمانیکه نوع در زمان کامپایل مشخص نباشد، این مساله قابل حصول نخواهد بود. تنها حالت پویای آن استفاده از نوع object است. 
- البته می‌شود با استفاده Reflection نوع جنریک را به صورت متغیر تعریف کنید.
نظرات مطالب
Blazor 5x - قسمت دوم - بررسی ساختار اولیه‌ی پروژه‌های Blazor
این خروجی که مشاهده کردید مربوط به حالت دیباگ هست. زمان حالت ارائه‌ی نهایی با دستور dotnet publish --configuration Release کار trimming دات نت 5 (حذف کدهای اضافی استفاده نشده) و همچنین فشرده سازی فایل‌ها، به صورت خودکار انجام می‌شود که حجم مشاهده شده را به بیشتر از نصف کاهش می‌دهد. البته این موارد publish و اجرای آفلاین و ثبت اطلاعات آفلاین، در قسمت‌های بعدی به صورت جداگانه و مفصلی بحث خواهند شد. این حجم publish، با حجم برنامه‌های واقعی Angular یا React قابل مقایسه است و تقریبا یکی هست.