افزایش خودکار Build و Revision
سلام خدمت دوستان عزیز، متاسفانه بعد از انفجار قبلی بلاگم فرصت چندانی نداشتم مطلب جدید ارسال کنم، اما یک خبر خوب دارم، از این به بعد قصد دارم هر پنجشنبه و جمعه مطالب جدید ارسال کنم. اینم از اولین مطلب امروز:
افزایش خودکار شماره Build و Revision :
دقیقا نمی دونم به چه دلیل ویژوال استودیو به صورت خودکار شماره Build و Revision را در زمان هر Build اضافه نمی کنه! از اونجایی که نسخه نرم افزار در مواردی برای من بسیار مهم و حیاتی بود یک روز تمام وقت گذاشتم تا روشی برای این کار پیدا کنم، چند تا Add-in و نمونه کد برای این کار پیدا کردم و بلاخره بعد از تست به روشی که در ادامه توضیح می دهم، رسیدم.
این مطلب بر گرفته از این مقاله در سایت Code Project است. نویسنده این مقاله با استفاده از قطعه کدی که به زبان VB.Net نوشته شده یک روش ابتکاری ارائه داده. به دلیل یکپارچه بودن محیط .Net ما با تغییرات بسیار جزئی قادر هستیم از این روش در پروژه های C# هم استفاده کنیم. در مقاله اصلی توضیحات کاملی داده شده پس در اینجا فقط به روش استفاده در C# می پردازیم.
برای شروع شما نیاز به DLL ساخته شده در مقاله اصلی نیاز دارید که از طریق لینکهای زیر قابل دریافت است:
دریافت نسخه کامپایل شده: buildtaskdll
دریافت کد منبع: buildtask_source
یک پروژه نمونه در C# ایجاد کنید. پروژه نمونه را ذخیر کنید و سپس ویژوال استودیو را ببندید. به محل ذخیره شدن پروژه بروید و فایل پروژه با پسوند csproj. را در یک پردازش گر متن مثل NotePad باز کنید. از Notepad++ هم می توانید استفاده کنید. تگ Project را پیدا کنید و بعد از آن این خط را اضافه کنید :
<UsingTask TaskName=”BuildTasks.IncrementBuildNumber” AssemblyFile=”BuildTask.dll” />
به طور کامل بعد از تغییر باید به نتیجه زیر برسید :
<?xml version=”1.0″ encoding=”utf-8″?>
<Project ToolsVersion=”3.5″ DefaultTargets=”Build” xmlns=”http://schemas.microsoft.com/developer/msbuild/2003″>
<UsingTask TaskName=”BuildTasks.IncrementBuildNumber” AssemblyFile=”BuildTask.dll” />
<PropertyGroup>
حالا تگ <Target Name=”BeforeBuild“> را پیدا کنید. این تگ باید در اواخر فایل باشد.
نکته! این قسمت در کد به صورت کامنت است و برای استفاده باید از حالت کامنت خارج شود. داخل این تگ Target باید تگ زیر را اضافه کنید :
<IncrementBuildNumber AssemblyFileLocation=”$(MSBuildProjectDirectory)PropertiesAssemblyInfo.cs” />
در واقع این قسمت بعد از تغییر به شکل زیر تغییر پیدا می کند :
<!– To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.–>
<Target Name=”BeforeBuild”>
<IncrementBuildNumber AssemblyFileLocation=”$(MSBuildProjectDirectory)PropertiesAssemblyInfo.cs” />
</Target>
<Target Name=”AfterBuild”>
</Target>
</Project>
نکته! قسمت های Bold شده برای راهنمایی شما است، تا به راحتی بتوانید محل تغییرات را پیدا کنید.
بسیار خوب. تغییرات را ذخیره کنید. حالا فایل DLL که در ابتدای این مقاله دانلود کردید در کنار فایل پروژه کپی کنید.
نکته! باید فایل DLL کامپایل شده را در کنار فایل پروژه که با پسوند .csproj است کپی کنید. کپی این فایل در کنار فایل solution برنامه که با پسوند .sln است بی فایده خواهد بود. همچنین در زمان انجام این تغییرات پروژه در ویزوال استودیو نباید باز باشد.
بسیار خوب همه کارها انجام شد. حالا پروژه نمونه را در ویژوال استودیو باز کنید. در زمان باز شدن پروژه ویزوال استودیو یک پیغام هشدار به شما می دهد که ممکن است این پروژه حاوی دسوراتی است که ممکن است کامپیوتر شما را تحت تاثیر قرار دهد. در اینجا این پیغام را نادیده بگیرید و گزینه Load Project Normally را انتخاب کنید.
در صورتی که همه کارها را به درستی انجام داده باشید از این پس بعد از هر بار Build برنامه شماره Build , Revision به صورت خودکار افزایش پیدا می کند. شما می توانید در فایل AssemblyInfo.cs مشخصات نسخه برنامه را مشاهده کنید.
در آخر هم با استفاده از کد زیر می توانید شماره نسخه برنامه را در کد بگیرید :
static public System.Version AssemblyVersion
{
get
{
return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
}
}
پروژه نمونه را هم از اینجا می توانید دریافت کنید: دانلود
موفق و پیروز باشید.
