PDA

View Full Version : فهمیدن ورژن فرم ورک داخل برنامه.



once4ever
جمعه 11 فروردین 1385, 17:27 عصر
سلام دوستان
با چه کدی میشه فهمید چه ورژنی version از فریم ورک framework نصب هست ؟
ممنون

omid_Ahmadi
جمعه 11 فروردین 1385, 19:48 عصر
خوب وقتی یه برنامه رو با .NET نوشتی و اوون برنامه داره توی یه سیستم اجرا میشه، همین نشون میده نسخه ای از .NET که نصب شده همون نسخه ایه که برنامه باهاش نوشته شده.

(البته در یکی دیگه از تاپیکهای دیگه گفته شده که نسخه های جدید می تونن نسخه های قدیمی تر رو هم پشتیبانی کنن، که اگه این طور باشه میشه فهمید نسخه ای که نصبه یا همون نسخه ایه که برنامه باهاش نوشته شده یا یه نسخه ی جدید تر).

اگر هم منظور شما اینکه قبل از اینکه برنامه اجرا بشه چه طور میشه فهمید که در این رابطه هم توی یه تاپیک دیگه صحبت شده و دوستان به نتیجه رسیدن.

موفق باشید.

once4ever
جمعه 11 فروردین 1385, 20:46 عصر
مرسی ولی منظور من این نیست.
میخوام تو برنامم با کد بفهمم چه ورژنی نصب هست
همونطور که اونجا هم صحبت کردیم فریم ورک 2 هم میتونه 1.1 رو اجرا کنه. به این دلیل سوال کردم

omid_Ahmadi
جمعه 11 فروردین 1385, 22:08 عصر
برای اینکه بفهمی الان چه ورژنهایی از فریم ورک روی یه سیستم نصبه می تونی subkey هایی که در کلید


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramewor k\Policy

هست رو تست کنی.
می تونی این کلید رو قبلش توی رجیستری یه نگاهی بهش بکنی، به ازای هر یه ورژنی از فریم ورک که الان نصبه، یه کلید با اسم نسخه ی فریم ورک اونجا هست. مثلا v1.1 و v2.0 و ...

once4ever
جمعه 11 فروردین 1385, 22:20 عصر
یعنی یکی از راههای که تو برنامه میشه فهمید چه ورژنی نصب هست اینه که تو برنامه رجیستری ویندوز بخونم.
ممنون از کمکت
آیا راه دیگه ای نیست؟ یعنی متغیری تو c#.net نیست که ورژن فریم ورک برگردونه؟

omid_Ahmadi
جمعه 11 فروردین 1385, 22:23 عصر
فکر نکنم. یا بهتر بگم، من تا حالا چیزی در این مورد نشنیدم.

Mehdi Asgari
جمعه 11 فروردین 1385, 22:31 عصر
سلام
برای تشخیص ورژن های نصب شده ، راهی که omid_Ahmadi گفتن جواب میده
اما اگه میخواید بدونید کدوم ورژن از .NET Framework در حال اجرای برنامه تونه ،
یه راه ساده وجود داره :
استفاده از کلاس System.Environment


Console.WriteLine(Environment.Version);

mamadgmail
شنبه 12 فروردین 1385, 00:19 صبح
من با اینکه می گین 2.0 می تونه 1.1 رو هم ساپورت کنه مشکل دارم توی اون تایپیک هم گفتم ولی کسی جواب نداد. من امتحان کردم جواب نداد.

once4ever
شنبه 12 فروردین 1385, 12:12 عصر
مرسی امیدجان - روش جناب احمدی قبل ازاجرای برنامه یک روش بسیار مفیدهست و روش شما داخل برنامه (چیزی که من میخواستم) - ازهردو ممنون

من با اینکه می گین 2.0 می تونه 1.1 رو هم ساپورت کنه مشکل دارم توی اون تایپیک هم گفتم ولی کسی جواب نداد. من امتحان کردم جواب نداد.
تنها دلیلی که میتونه برنامه ات اجرا نشه اینه که از تابعی استفاده کردی که تو ورژن 2 اون تابع به اون شکل نبوده یعنی overload ورژن 1.1 رو تو 2 اعمال نکردند.
ولی من چندتا امتحان کردم و جواب داد. تقریبا اکثر توبع و کلاسهای معمول تو فریم ورک 2 و 1.1 به هم شبیهن.

محمد میرمصطفی
یک شنبه 13 فروردین 1385, 23:11 عصر
منم اینو بدست آوردم.:
string a = System.Reflection.Assembly.GetEntryAssembly().Imag eRuntimeVersion;

Mehdi Asgari
دوشنبه 14 فروردین 1385, 13:59 عصر
سلام
این کدی که آقای میر مصطفی دادن ، ورژنی از framework رو
که برنامۀ ما با اون Build شده نشون میده ، نه اون ورژنی که در حال
اجرای برنامه است.
(مثلا فرض کنید من یه برنامه ای رو در Visual Studio .NET 2003 ایجاد
کردم (یعنی در ورژن v1.1.4322 )؛ حالا این برنامه رو در یک سیستم دیگه اجرا می کنم که فقط
.NET 2.0 بر روی اون نصب هست ، در این حالت ، Environment.Version
ورژن 2.0.50727.42 رو بر می گردونه ، ولی Assembly.GetEntryAssembly().ImageRuntimeVersion
ورژن v1.1.4322 رو بر می گردونه

محمد میرمصطفی
سه شنبه 15 فروردین 1385, 17:53 عصر
ممنون از راهنماییتون.

بابک زواری
سه شنبه 15 فروردین 1385, 19:23 عصر
من با اینکه می گین 2.0 می تونه 1.1 رو هم ساپورت کنه مشکل دارم توی اون تایپیک هم گفتم ولی کسی جواب نداد. من امتحان کردم جواب نداد.

میشه دقیق تر امتحانش کنی یا کدی رو که امتحان میکنی رو اینجا بذاری ؟