سلام خدمت اساتید عزیز
چگونه فایل های dll که در برنامه استفاده کرده ایم (درون فولدر debug پیش فایل exe برنامه وجود دارد) را درون یک فولدر بنام "core" قرار دهیم
و کامپوننت ها و dll ها رو از داخل فولدر core فراخونی کنیم؟؟؟
C# - windows form
سلام خدمت اساتید عزیز
چگونه فایل های dll که در برنامه استفاده کرده ایم (درون فولدر debug پیش فایل exe برنامه وجود دارد) را درون یک فولدر بنام "core" قرار دهیم
و کامپوننت ها و dll ها رو از داخل فولدر core فراخونی کنیم؟؟؟
C# - windows form
اینم جواب شما به صورت کامل :
http://stackoverflow.com/questions/1...tput-directory
سلام
این منظور من نبود اینطوری کل فایل های پروژه رو مسیرشو تغییر میده
من میخام فقط فایل های dll رو داخل یک فولدر بنام core قرار بدهم.
در حالت عادی فایل های dll پیش فایل exe تو همون فولدر دیباگ هست میخام داخل فایل دیباگ فقط exe باشه و تمام فایل های dll از داخل فولدر debug/core خونده شوند
سلام
برای این کار لازمه که فایل exe شما به هیچکدوم از اون dllها dependency نداشته باشه. یعنی
exe شما فقط یه loader باشه و کد اصلی توی یه dll دیگه باشه که درون همون پوشهی core قرار میگیره.
برای این کار کافیه شما یه exe بنویسی که پس از اجرا، بره از پوشهی Core، اون dll اصلی رو load کنه
و از یه کلاسی که اونجا داری به صورت CreateInstance یه شی بسازه و Main واقعی رو تو اون کلاس
فراخوانی کنی.
کار سختی نیست، اما گمان نمیکنم که امتیاز خاصی برات به همراه داشته باشه، اگه قصد و نیت ویژهای
برای این کار نداری، توصیه میکنم ازش صرفنظر کنی.
صبا صبوحی
سلام
به راحتی میشه این کار رو انجام داد
یه فایل app.config به پروژه تون اضافه کنید
کدهای زیر رو کپی کنید داخلش
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="core" />
</assemblyBinding>
</runtime>
</configuration>
در تگ probing privatePath که من نوشتم core شما میتونید نام اون پوشه تون رو بنویسید
کپی لوکال ریفرنس هاتونو فالس کنید و کامپایل کنید و لذتش رو ببرید
نکته : برنامه اجرایتون نیازمند فایل app.config خواهد بود
روش دوم
در فرم لود کد زیر را بنویسید
AppDomain.CurrentDomain.AppendPrivatePath("core");
سلام
ممنون استاد
اقا حالا چطوری کپی لوکال ریفرنس هاتونو فالس کنم، قبلنا دیده بودمش الان یادم نیست کجا بود
فهمیدم
میرید تو لیست رفرنس هاتون اونجا dll مورد نظرتون رو انتخاب میکنید تو منو پروپرتیس اونجا گزینه copy local هست فال میکنید و بعد با اون فولدری که انتخاب کردید که ما core بود این فولدر رو میسازی و فایل های dll داخلش قرار میدی
و داخل فایل app.config هم کد
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="core" />
</assemblyBinding>
</runtime>
رو داخل
<?xml version="1.0" encoding="utf-8"?>
<configuration>
**********
</configuration>
بجای **** قرار میدی
سلام دوستان. من تازه با این مورد برخورد کردم و ممنونم از توضیحاتتون. ولی من میخواستم در صورتیکه بشه فایلهای dll رو به یک درایو دیگه بغیر از درایو نصبب برنامه منتقل کنم. مثلا اگر برنامه توی درایو D کپی و اجرا میشه، فایلهای dll رو توی درایو C کپی کنم. با روش بالا که فرموده بودید اجرا کردم ولی نشد و فولدر به اصطلاح Core فقط در زیر فولدر debig اگه باشه جواب میده.
اینم یک روش برای جواب شما دوست گرامی، لینک زیر ادرس جواب شما + پروژه :
DllProject.rar
http://stackoverflow.com/questions/13586128/load-a-dll-from-shared-network-drive-in-c-sharp
با سلام خدمت دوستان
من از webkit به عنوان مرورگر تو نرم افزار خودم استفاده کردم
حالا زمانی که تمام کماپوننت ها و کنترل های مورد نیازشو تو پوشه ی bin کنار فایل های پروژه میریزم کار می کنه اما به محضی که کپی می کنم تو ی پوشه ی خاصی نمیتونه initialize کنه
چه جوری میتونم تو برنامم بگم که مسیر فراخاوانی کامپوننت ها از یک پوشه ی خاص باشه
کمک کنید خیلی لنگم
ممنون
آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 18 شهریور 1394 در 22:38 عصر
سلام
من فایل App.Config رو اصلاح کردم اما فایل EXE نمیتونه آدرس رو پیدا کنه. مشکل از کجاست؟ زمانی که در Solution یک Reference اضافه می کنم در بخش Properties باید تغییراتی بدم؟ آدرس Reference که یکی از مسیرهای ویندوز هست (C:\Test\Reference.dll) ارتباطی با فایل App.Config پس از اضافه کردن probing privatePath نداره؟ یعنی برنامه پس از اجرا آدرس اولیه رو به دلیل probing privatePath نادیده می گیره؟
ممنون
سلام دوست عزیز. در مورد این پست اگر فولدر core رو توی مسیری به جز مسیر نصب برنامه بگذاریم، چه کنیم؟؟