PDA

View Full Version : سوال: توضیح این قطعه کد



water_lily_2012
دوشنبه 22 مهر 1392, 09:53 صبح
سلام
این قطعه کد چه کاری را انجام می دهد. خواهشا دقیق توضیح دهید.

var buildDateTime=new
DateTime(2000,1,1).Add(new
TimeSpan(
TimeSpan.TicksPerDay*Assembly.GetExecutingAssembly ().GetName().Version.Build+ //days since 1 January 2000
TimeSpan.TicksPerSecond*2*Assembly.GetExecutingAss embly().GetName().Version.Revision) //seconds since midnight,(multiply by 2 to get original)
);
ورژن برنامه در کجا ذخیره میشود و چه موقع به آن اضافه می شود؟؟؟

تشکر

water_lily_2012
دوشنبه 22 مهر 1392, 13:19 عصر
کسی نیست راهنمایی کنه؟

تشکر

mam_65
دوشنبه 22 مهر 1392, 13:44 عصر
یکم توضیح بده چی میخوای دقیقأ؟
TimeSpan نشان دهنده طول زمان است و برای گذاشتن مدت برای برنامه ها مورد استفاده قرار میگره
ورژن برنامه تو این مسیره PROJECT\Project Properties\Application\Assemply Information

water_lily_2012
دوشنبه 22 مهر 1392, 14:18 عصر
سلام
درسته ورژن برنامه توی همون مسیره ولی وقتی میرم انجا که همه صفر هست.
پس چه دلیلی در ضرب با این

Assembly.GetExecutingAssembly ().GetName().Version.Build
و یا خط بعدی هست.
اصلا اونجا اگر ورژن را تغییر بدم باز هم تاثیری در نتیجه نداره.

خب حالا این کد چه کار میکنه بدون در نظر گرفتن ضرب در بقیه.

DateTime(2000,1,1).Add(new
TimeSpan();

mam_65
دوشنبه 22 مهر 1392, 14:40 عصر
تابع DateTime برای ست کردن تاریخ ماه و روزه DateTime(2000,1,1)
تابع Time spa هم برای بدست آوردن یه بازه زمانی TimeSpan();
برای درک بهتر ان موضوع واست یه مثال میزارم

111855

water_lily_2012
دوشنبه 22 مهر 1392, 14:47 عصر
این add داره یه بازه زمانی را به تاریخ 2000 اضافه میکنه که چی بشه؟
چرا در ساخت بازه زمانی از assembly استفاده کرده است؟؟

مشکل من اینهاست.

mam_65
دوشنبه 22 مهر 1392, 14:56 عصر
که واسه استفاده از برنامه که نوشته محدودیت ایجاد کنه که بگه از تاریخ 2000.1.1 تا نصف شب همون روز بتونه مثلا از برنامه استفاده کنه یه جورایی رجستر کردن دیگه همین.

water_lily_2012
دوشنبه 22 مهر 1392, 15:24 عصر
نه هنوز حل نشده. من کل پراپرتی را قرار میدم و شما هم لطفا اجرا کن ببین چی بهت میده تا بحث کنیم.

public static string AssemblyBuildNumber
{
get
{
var buildDateTime=new
DateTime(2000,1,1).Add(new
TimeSpan(
TimeSpan.TicksPerDay*Assembly.GetExecutingAssembly ().GetName().Version.Build+ //days since 1 January 2000
TimeSpan.TicksPerSecond*2*Assembly.GetExecutingAss embly().GetName().Version.Revision) //seconds since midnight,(multiply by 2 to get original)
);
return String.Format("{0,4}.{1,2:D2}.{2,2:D2} - {3,2:D2}:{4,2:D2}",
buildDateTime.Year,
buildDateTime.Month,
buildDateTime.Day,
buildDateTime.Hour,
buildDateTime.Minute
);
}
}

خب این را هم اضافه کن.

using System.Reflection;
حالا نتیجه را بریز تو یک تکس باکس

حالا برو در فایل AssemblyInfo و AssemblyVersion
را به

[assembly: AssemblyVersion("1.0.*")]
تغییر بده.
حالا دوباره نتیجه را در تکس باکس بریز.

خب این تا اینجا
حالا برنامه را 100 بار هم که اجرا کنی هیچ تغییری در نتیجه نمی بینی. فقط اگر دوباره rebuild کنی و یا تغییری بدی و debug کنی چرا بروز میشه.

شما هم انجام بده تا با هم بحث کنیم.

تشکر

mam_65
دوشنبه 22 مهر 1392, 15:43 عصر
میتونی فایلش رو بزاری

water_lily_2012
دوشنبه 22 مهر 1392, 16:04 عصر
کامل بود دیگه.
یک پروژه win form درست کن.
این کلاس را هم اضافه کن.

using System;
using System.Reflection;

namespace ComLink
{
public class ProgramAssembly
{
public static string AssemblyBuildNumber
{
get
{
string aaa = Assembly.GetExecutingAssembly().GetName().Version. Build.ToString();

var buildDateTime = new
DateTime(2000, 1, 1).Add(new
TimeSpan(
TimeSpan.TicksPerDay * Assembly.GetExecutingAssembly().GetName().Version. Build + //days since 1 January 2000
TimeSpan.TicksPerSecond * 2 * Assembly.GetExecutingAssembly().GetName().Version. Revision //seconds since midnight,(multiply by 2 to get original)
));

return String.Format("{0,4}.{1,2:D2}.{2,2:D2} - {3,2:D2}:{4,2:D2}",
buildDateTime.Year,
buildDateTime.Month,
buildDateTime.Day,
buildDateTime.Hour,
buildDateTime.Minute
);
}
}
}
}
این را هم در فرم اضافه کن

txtMap2.Text = ProgramAssembly.AssemblyBuildNumber;

water_lily_2012
دوشنبه 22 مهر 1392, 16:11 عصر
راستی assemblyinfo داخل پوشه properties موجوده.
یکبار هم انرا تغییر بده و ببین نتیجه چی میشه.
حالا شاید شما هم مثل یه کم درگیر بشی که چطور این کار را می کنه.

mam_65
دوشنبه 22 مهر 1392, 20:53 عصر
این مثال رو نگاه کن حتمأ متوجه میشی چطوری کار میکنه:چشمک:
111872

water_lily_2012
دوشنبه 22 مهر 1392, 21:59 عصر
سلام
خب فکر کنم یه کم بهتر متوجه شدم.