PDA

View Full Version : سوال: مشکل در ایجاد برنامه ای با دو پروژه در 2010



amir.khanlari
یک شنبه 19 اردیبهشت 1389, 19:15 عصر
من در برنامم از 2 پروژه استفاده کردم وقتی یکبار برنامه رو build می کنم و بعد توی برنامه تغییری می دم و می خوام دوباره برنامه رو build کنم خطایی می گیره مبنی بر اینکه یکی از اون 2پروژه توسط برنامه دیگری در حال استفاده می باشد و امکان دسترسی به آن وجود ندارد در حالی برنامه ای از اون استفاده نمی کنه . با 2008 این مشکل رو نداشتم ولی 2010 این خطا رو می گیره

Error 2 Unable to copy file "obj\Debug\projecta.dll" to "bin\Debug\projecta.dll". The process cannot access the file 'bin\Debug\projecta.dll' because it is being used by another process.

JaguarXF
یک شنبه 19 اردیبهشت 1389, 19:49 عصر
هفته قبل همین مشکل رو داشتم در 2008
دلیل اصلیش رو نمیدونم . ولی پراسس ها رو با Process Explorer بررسی و اونها رو کشتم. و برنامه رو دوباره باز کردم . مشکل حل شد.
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

amir.khanlari
یک شنبه 19 اردیبهشت 1389, 19:57 عصر
هفته قبل همین مشکل رو داشتم در 2008
دلیل اصلیش رو نمیدونم . ولی پراسس ها رو با Process Explorer بررسی و اونها رو کشتم. و برنامه رو دوباره باز کردم . مشکل حل شد.
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

با 2008 این مشکل رو نداشتم ولی با 2010 ...
اگه visual studio رو یک بار بندید درست می شه ولی دوباره بعد از یک بار build کردن همین مشکل بوجود میاد. تصور کنید که هر بار که برنامه رو build می کنید مجبور بشید VS رو بندید و دوباره باز کنید:متعجب:

JaguarXF
یک شنبه 19 اردیبهشت 1389, 20:07 عصر
با 2008 این مشکل رو نداشتم ولی با 2010 ...
اگه visual studio رو یک بار بندید درست می شه ولی دوباره بعد از یک بار build کردن همین مشکل بوجود میاد. تصور کنید که هر بار که برنامه رو build می کنید مجبور بشید VS رو بندید و دوباره باز کنید:متعجب:

کاری که گفتم رو انجام دادی؟! نه !
داخل سرچش اسم پروژه ات رو بده . هرچی نتیجه برگردوند رو بزن Kill کن .
دفعات بعدی دیگه نباید مشکلی پیش بیاره.

amir.khanlari
یک شنبه 19 اردیبهشت 1389, 20:29 عصر
کاری که گفتم رو انجام دادی؟! نه !
داخل سرچش اسم پروژه ات رو بده . هرچی نتیجه برگردوند رو بزن Kill کن .
دفعات بعدی دیگه نباید مشکلی پیش بیاره.

این کارو هم کردم بعد از یک بار run شدن برنامه همون مشکل پیش میاد دوباره

JaguarXF
یک شنبه 19 اردیبهشت 1389, 20:39 عصر
هممم... فولدر obj رو دیلیت کن !

راه بهتر:
در پراپرتی های پروژه ات- رایت کلیک روی پروژه دز سلوشن اکسپلورر و انتخاب گزینه پراپرتیز- در تب Build Event در تکست باکس مربوط به Pre-Build event Command Line این دستور رو قرار بده. بدین صورت اگر لاک از قبل موجود باشه باید اون رو دیلیت کنه و اگر موجود نباشه هم اجازه ساختش رو بده :


if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"

amir.khanlari
یک شنبه 19 اردیبهشت 1389, 20:49 عصر
فکر می کردم مشکل حل شده ولی دوباره همون شرایط بالا که گفتم

JaguarXF
یک شنبه 19 اردیبهشت 1389, 21:06 عصر
توجه کن که باید برای همه پروژه های داخل سلوشنت این کار رو انجام بدی.
بقیش دیگه مشکل دیگری هست. تا اونجا یک مشکل شناخته شده بود:
http://nayyeri.net/file-lock-issue-in-visual-studio-when-building-a-project

amir.khanlari
یک شنبه 19 اردیبهشت 1389, 23:17 عصر
متاسفانه مشکلم هنوز حل نشده . لینکی که گذاشته بودید رو دیدم . اون تیکه کد رو به هر دو پروژه اضافه کردم. بعد از اینکه تغییری در برنامه میدم و می خوام برنامه رو run کنم دوباره همون خطا رو می ده .

mehdi.mousavi
چهارشنبه 22 اردیبهشت 1389, 11:50 صبح
سلام.


از چه ویروس یابی استفاده می کنید؟ این مشکل قبلا هنگام استفاده از Avast (http://www.avast.com/index) و Comdo (http://www.comodo.com/) گزارش شده.
آیا از Source Safe یا نرم افزارهای Source Control دیگه استفاده می کنید؟
برنامه رو چطوری از 2008 به 2010 Port کردید؟
آیا Windows Indexing Service شما Enable هستش؟ در برخی موارد این خطا به دلیل فعال بودن سرویس Indexing رخ داده.
آیا توی Post Build یا Pre Build دستوری نوشته اید؟ اگر چیزی نوشته اید لطفا اینجا قرار بدید.
Process Explorer رو که اجرا کردید و نام DLL رو در پنجره Find زدید، چند تا Handle پیدا کرد و به چه Process هایی؟ میتونید Snapshot ای از اون رو اینجا قرار بدید تا بلکه خودم سریعتر متوجه موضوع بشم.

لطفا به این سوالات با دقت پاسخ بدید تا شاید بتونم کمکی کنم.
موفق باشید.

amir.khanlari
چهارشنبه 22 اردیبهشت 1389, 12:41 عصر
1-از kaspersky2010 بعنوان آنتی ویروس استفاده می کنم
2- خیر از چنین برنامه هایی استفاده نمی کنم
3-برنامه یک usercontrol داره که برای login ازش استفادده می کنم که وقتی در 2008 از اون استفاده می کردم مشکلی نداشتم اما الان که توی 2010 ازش استفاده می کنم مشکلی که گفتم بوجود میاد.لینک اون usercontrol رو در زیر می زارم
http://barnamenevis.org/forum/showthread.php?t=94791
4-متوجه سوالتون نشدم
5-توی prebuild دستوری که دستمون در بالا گفتند رو نوشتم

if exist "$(TargetPath).locked" del "$(TargetPath).locked"
if not exist "$(TargetPath).locked" if exist "$(TargetPath)" move "$(TargetPath)" "$(TargetPath).locked"
6-عکسی از process explorer در زیر ضمیمه کردم

mehdi.mousavi
چهارشنبه 22 اردیبهشت 1389, 13:18 عصر
سلام.
من راستش متوجه نشدم وقتی پروژه شما نمیتونه درست compile بشه، چطوری Rastan Group.exe ایجاد شده؟؟؟ لطفا Reference های موجود در پروژه رو باز کنید، و مطمئن بشید که به اشتباه فایل .exe در Reference های خود پروژه اضافه نشده باشه (اینم یکی دیگه از دلائل اون پیام میتونه باشه و قبلا گزارش شده). به بیان دیگه، Reference های پروژه رو بدقت نگاه کنید و ببینید چه Assembly هایی رو در پروژه Reference کرده اید. بخش Pre Build و Post Build رو هم Reset کنید.

روی نام پروژه Right-Click کنید، و Clean رو انتخاب کنید تا فایلهای پروژه از شاخه bin\debug پاک بشه. سپس توی Windows Explorer به شاخه bin\debug برید و ببینید آیا اونجا فایلی باقی مونده یا خیر و اگر باقی مونده چه فایلی هستش.

پاورقی: آخه اینطوری که نمیشه ایراد رو پیدا کرد... براتون ممکنه پروژه رو برام بصورت pack شده ارسال کنید تا من روی ماشین خودم تست کنم و ایراد رو پیدا کنم؟

amir.khanlari
چهارشنبه 22 اردیبهشت 1389, 13:42 عصر
من پروژه ای رو براتون ضمیمه کردم که فقط فعلا یک فرم داره که همون فرم login هست بار اول پروژه build میشه ولی وقتی که تغییری در اون داده میشه و دباره میخوام build کنم خطا می گیره .برنامه اصلی در پوشه rastan group هست. خطایی هم که میگیره در زیر گذاشتم

Unable to copy file "obj\Debug\LoginControl.dll" to "bin\Debug\LoginControl.dll". The process cannot access the file 'bin\Debug\LoginControl.dll' because it is being used by another process. LoginControl

mehdi.mousavi
چهارشنبه 22 اردیبهشت 1389, 14:50 عصر
سلام.
بسیار خوب. من برنامه رو دیدم و اون ایراد هم رخ داد...


VistaButton رو چرا به شکل یه DLL ایجاد نکرده و به Reference ها اضافه نکرده اید؟ روش صحیحش اینه که همون کدها رو در یک Class Library قرار بدید و DLL مزبور رو به Reference ها اضافه کنید.
ایراد اصلی از اونجایی ناشی میشه که شما VistaButton.exe رو به لیست Reference های Rastan Group اضافه کرده اید. توی Solution Explorer برید و از لیست Reference های این پروژه، VistaButton رو حذف کنید. فقط کافیه LoginControl اونجا حضور داشته باشه و بس. این تغییر رو اعمال کنید، Pre Build و Post Build رو هم پاک کنید (نیازی به اون کارها نیست)، سپس برنامه رو کامپایل کنید و می بینید که اون ایراد دیگه رخ نمیده.

موفق باشید.

Update: لطفا به این مساله نیز دقت کنید که یکی LoginControl شما داره از نسخه 2 .NET Framework استفاده میکنه، و اونیکی پروژه از نسخه 3.5. من خیلی بی نظمی در این پروژه دیدم...

amir.khanlari
چهارشنبه 22 اردیبهشت 1389, 15:19 عصر
خیلی ممنون از اینکه این موضوع رو پیگیری می کنید . اما vistabutton یک button سفارشی است که فقط فایل exe اون رو دارم و می خوام از اون در سایر فرم های برنامم استفاده کنم . میشه قسمت اول رو بیشتر توضیح بدید.
کارهایی که در قسمت دوم گفتید رو انجام دادم ولی باز هم همون پیغام رومیده
در ضمن نمیدونم چرا برنامه همون بار اول که اجرا میشه در usercontrol testcontainer اجرا میشه
ببخشید که مزاحمتون شدم .
Update : هر دو پروژه رو به Net Framework 4 بردم . آیا این میتونه دلیلی برای وقوع اون خطا باشه؟ باز هم همون خطا

mehdi.mousavi
چهارشنبه 22 اردیبهشت 1389, 15:37 عصر
خیلی ممنون از اینکه این موضوع رو پیگیری می کنید . اما vistabutton یک button سفارشی است که فقط فایل exe اون رو دارم و می خوام از اون در سایر فرم های برنامم استفاده کنم . میشه قسمت اول رو بیشتر توضیح بدید.
کارهایی که در قسمت دوم گفتید رو انجام دادم ولی باز هم همون پیغام رومیده
در ضمن نمیدونم چرا برنامه همون بار اول که اجرا میشه در usercontrol testcontainer اجرا میشه
هر دو پروژه رو به Net Framework 4 بردم . آیا این میتونه دلیلی برای وقوع اون خطا باشه؟
ببخشید که مزاحمتون شدم .

سلام.
این Source اون پروژه... منظورم VistaButton هستش (http://www.codeproject.com/KB/buttons/VistaButton.aspx). خودتون میتونید Source اش رو بردارید به یه DLL تبدیل کنید و در پروژه استفاده کنید. (احتمالا همین مساله باعث بروز این مشکل عجیب و غریب شده). فقط حواستون به Version ای که تحت اون برنامه رو Compile میکنید باشه. اینطور که بنظر میرسه، این امکان وجود داره که کل Solution رو تحت یک Framework کامپایل و استفاده کنید. بنابراین این کار رو حتما انجام بدید.

این کارو کنید، اگر مشکلی بود من در خدمتم.

موفق باشید.

amir.khanlari
چهارشنبه 22 اردیبهشت 1389, 16:36 عصر
سلام.
این Source اون پروژه... منظورم VistaButton هستش (http://www.codeproject.com/KB/buttons/VistaButton.aspx). خودتون میتونید Source اش رو بردارید به یه DLL تبدیل کنید و در پروژه استفاده کنید. (احتمالا همین مساله باعث بروز این مشکل عجیب و غریب شده). فقط حواستون به Version ای که تحت اون برنامه رو Compile میکنید باشه. اینطور که بنظر میرسه، این امکان وجود داره که کل Solution رو تحت یک Framework کامپایل و استفاده کنید. بنابراین این کار رو حتما انجام بدید.

این کارو کنید، اگر مشکلی بود من در خدمتم.

موفق باشید.
سلام جناب موسوی
اون لینکی که گذاشتید رو رفتم و VistaButton رو dll کردم و به برنامه اضافه کردم و exe اون رو از برنامه حذف کردم و کل Solution رو تحت Net Framework 4 بردم ولی باید متاسفانه بگم که مشکل پابرجاست و همون خطا ظاهر میشه.

mehdi.mousavi
چهارشنبه 22 اردیبهشت 1389, 16:52 عصر
سلام جناب موسوی
اون لینکی که گذاشتید رو رفتم و VistaButton رو dll کردم و به برنامه اضافه کردم و exe اون رو از برنامه حذف کردم و کل Solution رو تحت Net Framework 4 بردم ولی باید متاسفانه بگم که مشکل پابرجاست و همون خطا ظاهر میشه.

یا للعجب... هوووم... میشه پروژه اش رو (این DLL جدید رو) برام بفرستید؟

amir.khanlari
چهارشنبه 22 اردیبهشت 1389, 17:29 عصر
جناب موسوی از محبتی که کردید واقعا ممنونم . مشکل حل شد . یکبار کلا Button هایی که استفاده کرده بودم رو حذف کردم از Refrences هم کلا VistaButton رو حذف کردم و اول dll اونو به پروژه LoginControl اضافه کردم و بعد Button ها رو دوباره به پروژه اضافه کردم و دیگه مشکلی پیش نیومد.
ولی میشه بگید که مشکل دقیقا از کجا بود و نکته دیگر اینکه چرا برنامه توی usercontrol testcontainer اجرا میشه
پروژه مربوط به VistaButton رو در زیر ضمیمه کردم .توی اون 2تا warning داره که نفهمیدم چرا اینا رو میده اونا مربوط میشن به mFadeIn.Tick و mFadeOut.Tick با وجود این 2تا warning نمیشه توی قسمت Design مربوط به Usercontrol رفت ولی موقع استفاده بدرستی برنامه کار می کنه. اگر این پست برخلاف قوانین تالار هست بگین تا از طریق پیام خصوصی ازتون بپرسم
واقعا ازتون ممنونم خیلی کمکم کردید.
Update : مشکل اجرای برنامه در UserControl TestContainer حل شد.

mehdi.mousavi
پنج شنبه 23 اردیبهشت 1389, 11:23 صبح
خوشحالم که مشکل اصلی حل شد. الان فقط مشکلتون اون 2 اخطاری هستش که بابت VistaButton می گیرید؟ (من البته هنوز فرصت نکردم برنامه رو ببینم).

پاورقی: همیشه سعی کنید کارها رو بر اساس استاندارد های موجود انجام بدید. کل این مشکلات بخاطر اضافه کردن Reference یک فایل EXE به لیست Reference های پروژه بود، که البته در پست 12 همین تاپیک حدس زده بودم. وقتی بر اساس الگوهای استاندارد کار کنید، با حداقل مشکلات مواجه میشید. در هر حال، واقعا خوشحالم که مشکل حل شد، چون از دست دادن VS2010 خیلی ناراحت کننده هستش... :)

amir.khanlari
پنج شنبه 23 اردیبهشت 1389, 12:15 عصر
سلام . بله مشکل که نه برنامه کار میکنه ولی با اون 2تا Warning که توی پروژه VistaButton هست .

mehdi.mousavi
شنبه 25 اردیبهشت 1389, 10:10 صبح
سلام . بله مشکل که نه برنامه کار میکنه ولی با اون 2تا Warning که توی پروژه VistaButton هست .

سلام.
اینم VistaButton بدون اون 2 تا اخطار. (اون اخطارهای بخاطر دو تا متغیر Timer بودش).

موفق باشید.

amir.khanlari
دوشنبه 27 اردیبهشت 1389, 21:51 عصر
سلام.
این تاپیک با کمک دوست و مدیر خوبمون جناب موسوی به نتیجه رسید .