در مطلبی با نسخه بندی و چرخه انتشار نرم افزار آشنا شدید. اما کمبود ابزاری کارآمد و حرفه ای در ویژوال استادیو من را بر آن داشت تا افزونهای را تهیه و در دسترس تمامی توسعه دهندگان قرار دهم. پس از مطالعه و بررسی روشهای نگارش بندی نرم افزار و ابزارهای موجود، دو روش عمده نسخه بندی نرم افزار وجود دارد که در زیر آورده شده است.
- نسخه بندی معنایی
- نسخه بندی استاندارد مایکروسافت
در روش معنایی چهار قسمت نسخه بندی Major.Minor.Build.Revision به صورت زیر افزایش و تغییر مییابد:
- Revision تا 1000 افزایش مییابد
- در اجرای بعدی به 0 تنظیم شده و قسمت Build بعلاوه 1 میشود.
- Build تا 100 افزایش مییابد
- در اجرای بعدی Build به 0 تنظیم شده و قسمت Minor بعلاوه 1 میشود و Revision هم 0 میشود.
- Minor تا 10 افزایش مییابد.
- در اجرای بعدی Minor به 0 تنطیم شده، قسمت Major بعلاوه 1 میشود و قسمتهای قبل همه 0 میشوند.
در روش استاندارد ماکروسافت مقادیر قسمتهای Build و Revision از الگوریتم زیر محاسبه میشود.
- مقدار Build از مجموع روزهای که از تاریخ پروژه گذشته است بدست میآید.
- مقدار Revision از مجموع ثانیههای که از نیمه شب محلی روز جاری تا زمان اجرای پروژه تقسم بر دو بدست میآید.
- مقادیر Major و Minor هم با توجه تولید نسخه جدید و تغییرات عمده در نرم افزار بصورت دستی تغییر مییابد.
راهنمای نصب و اجرا:
ابتدا افزونه Version Manager را از سایت ویژوال استادیو گالری دریافت و نصب کنید.
سپس از منوی View > Other Windows > Version Manager را انتخاب کنید.
پس از باز شدن پنجره Version Manager پروژههای Solution جاری بارگذاری و Assembly Version و File Version هر پروژه را میتوانید به راحتی مشاهده و یا تغییر دهید.
اگر بخواهید بصورت خودکار بر اساس شمای انتخاب شده، نسخه نرم افزار را افزایش دهید، شمای نسخه بندی را انتخاب کنید. در دو زمان Build و یا Rebuild پروژه می توان نسخه را افزایش داد.
Semantic Versioning:
- گزینه Semantic Versioning را از قسمت Version Style انتخاب کنید.
- گزینه Increment Action قسمتی از نگارش که میخواهید شمای نسخه بندی بر روی آن اعمال شود را مشخص میکند. که دو گزینه Build یا Revision وجود دارد
- گزینه Increment Event زمان رویداد اعمال شمای انتخاب شده را مشخص میسازد.
- تنظیمات را ذخیره و پروژه خود را Rebuild نمایید.
- در پنجره Output نسخه جدید نشان داده میشود.
Microsoft DateTime:
- گزینه Microsoft DateTime را از قسمت Version Style انتخاب کنید.
- تاریخ شروع پروژه بصورت خودکار خوانده و نمایش داده میشود یا تاریخ شروع پروژه را انتخاب کنید
- با توجه به انتخاب Increment Action نسخه جدید محاسبه میشود.
- پروژه را Rebuild و نسخه جدید را مشاهده نمایید.
همچنین از پروژههای #C و VB.NET و C++ Managed پشتیبانی میکند
این ابزار هنوز در نگارش بتا است و ممکن است باگهایی داشته باشد.
نظرات و پیشنهادات شما توسعه دهندگان عزیز میتواند موجب هر چه بهتر و کاملتر شدن این ابزار باشد.
فایل extension.vsixmanifest افزونه رو باید ویرایش کنید (فایل vsix در اصل یک فایل zip است). مثلا VisualStudio Version آن الان 10 است که باید بشود 11. بعد در SupportedFrameworkRuntimeEdition آن باید MaxVersion به 4.5 تنظیم شود.
در برنامههای مبتنی بر وب رایج، معمولا تبدیل تاریخ میلادی به شمسی در سمت سرور انجام میگیرد و تاریخ شمسی حاصل از تبدیل، به کاربر نمایش داده میشود. اما در برنامههای Single Page و یا به اختصار SPAها که کلاینت فقط با یک سری داده به فرمت JSON درگیر است، برای نمایش تاریخ شمسی به چه طریقی باید عمل کرد؟ آیا باید تاریخ را در سمت سرور به فرمت مورد نظر تبدیل کرد و یا در سمت کلاینت؟ همهی اینها از جمله سوالاتی هست که به هنگام توسعهی SPAها با آنها حتما درگیر خواهید شد.
شاید بتوان گفت که در SPA ها، هدف این است که از بار سرور تا حد ممکن کم کرد و آن را در بین کلاینتها توزیع کرد. در SPAها نقش اصلی سرور تامین داده هاست و بیشتر پردازشها در صورت امکان در سمت کلاینت انجام میشود و میبینید که حتی رندر کردن HTML نیز به عهدهی قالبهای سمت کلاینت است. البته هنوز هم میتوان قبل از اینکه داده را به فرمت JSON سریالایز کرد، سمت سرور بر روی آنها پیمایش انجام داده و تاریخهای میلادی را به شمسی تبدیل کرد که هدف ما این نیست و میخواهیم این کار را بر عهدهی مرورگر کاربر قرار دهیم.
معرفی moment.js
برای کار با دادههایی از جنس تاریخ در سمت کلاینت، کتابخانهی جاوا اسکریپتی قدرتمندی به نام moment.js وجود دارد. این کتابخانه دارای انواع و اقسام API برای نمایش و پردازش تاریخ هست. حتی میتواند relative time را نیز نمایش دهد. منظور از relative time این هست که به جای نمایش تاریخ، اختلاف آن را با زمان حال نمایش دهد. برای مثال مینویسند فلان پست در دو ساعت پیش ارسال شده و زمان دقیق ارسال پست را نمایش نمیدهد.
خوشبختانه برای افزودن تاریخ شمسی به این کتاب خانه، افزونهای به نام moment-jalaali برای آن تدارک دیده شده است. کار با آن نیز بسیار راحت است. کافی است در همان API هایی که برای فرمت کردن تاریخ در moment.js استفاده میکردید؛ یک j در ابتدای آنها قرار دهید که مثالهای کامل استفاده از آن را در مستندات آن میتوانید مشاهده کنید.
نحوهی استفاده از moment.js در AngularJS و ASP.NET
در ASP.NET فیلد هایی که از جنس DateTime هستند به شکل زیر به فرمت JSON سریالایز میشوند:
\/Date(1374222094520)\/
moment("/Date(1198908717056-0700)/"); // December 28 2007 10:11 PM
{{ name | uppercase }}
{{post.date | jalaliDate:'jYYYY/jMM/jDD hh:mm' }}
تعریف فیلتر jalaliDate نیز به شکل زیر است:
app.filter('jalaliDate', function () { return function (inputDate, format) { var date = moment(inputDate); return date.fromNow() + " " + date.format(format); } });
خروجی این فیلتر نیز به شکل "4 ماه پیش 1392/12/07 03:10" است و مشاهده میکنید که به کمک filterها در AngularJS انجام این گونه از کارها بسیار ساده و لذت بخش است.
توجه کنید که این فقط یک ایدهی ابتدایی و ساده از پیاده سازی فیلتر فوق است. قطعا با کمک APIهای متنوع momentjs و پارامترهای ورودی فیلتر، میتوان فیلتری بسیار پیشرفتهتر تعریف کرد.
دریافت کدهای یک مثال پیاده سازی شده با استفاده از کدهای فوق