ايران ويج

نسخه‌ی کامل: نحوه انتقال DLL پایگاه داده Sqlite
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام .
من از Sqlite در پروژام استفاده کردم ( VS2010) زبان C#

همانطور که میدانید SQlite اپن سورس بوده نیازی به نصب بروی سیستم کاربر نهایی نداره و فقط باید Dll مربوطه را بر روی سیستم کاربر نهایی کپی کنیم .
ولی نمیدانم چرا من هرکاری میکنم کپی میشه ولی خطا میده برنامه و کار نمیکنه !!!

من مراحل زیر را دقیقا انجام داده ام اگر جایی اشتباه است بفرمایید باید چی کار کنم :

ابتدا از مسیر زیر که مربوط به دانلود فایل ها میشه نسخه مربوط Development به ویژوال استادیو 2010 را که با فریم ورک 4 کار میکنه از سایتش دانلود میکنم .

از این لینک : http://system.data.sqlite.org/index....downloads.wiki


طبق تصویر زیر :


http://axgig.com/images/14537708821441894415.jpg




سپس Extarct کرده فایل Setup را اجرا میکنم وقتی نصب برنامه تمام میشه یهک چنین مسیری در درایوی که ویندوز نصبه ایجاد میشه :

D:\Program Files\System.Data.SQLite\2010

که شامل فایل ها و فولدر های زیر است :

شاخه : bin ، Doc , GAC , Uninstall

توی شاخه bin فایل ها مقابل هستش : System.Data.SQLite.dll و System.Data.SQLite.Linq.dll و System.Data.SQLite.Linq.pdb و System.Data.SQLite.pdb و test.exe و northwindEF.dbو test.exe.config

فایل test.exe ای که خودش گذشته را وقتی اجرا میکنم یک فرم باز میشه که وقتی دکمه Run را میزنم برنامه خطا میده دقیقا بصورت تصویر زیر :


http://axgig.com/images/95176301595167264657.jpg

حالا توی ویژوال استادیو دات نت 2010 name spase مربوطه را اضافه میکنم : using system.data.sqlite;
بعد میرم Refrence اش را هم به لیست رفرنس هام توی پروژه اضافه کنم . وقتی از منو Debug ---> Add Refrence را میزنم طبق راهنمایی که در همه سایت ها نوشته شده باید در تب دانت نت (.NET) بتوانم System.Data.Sqlite را پیدا کنم ولی همانطور که در تصویر زیر مشاهده میکنید چنین چیزی وجود ندارد !!!

که نمدانم چرا ؟؟؟ چون این پروایدری که ما دانلود کردیم و نصب کردیم مخصوص وِیژوال استادیو دات نت 2010 هستش و باید بعد از نصبی که کردیم حالا Dll اش توی این لیست بیاد !!



http://axgig.com/images/95176301595167264657.jpg



بعد چون توی این لیست نیست میروم دکمه Browse را میزنم و از همون مسیر : D:\Program Files\System.Data.SQLite\2010 توی شاخه bin فایل System.data.sqlite.dll را انتخاب میکنم و OK میکنم تا به لیست رفرنسهای پروژم اضافه بشه .

بعد توی لیست رفرنس ها بر روی اون راست کلیک کرده و پروپرتی Copy Local را برابر True قرار میدهم که هر جا پروژه من رفت باهاش کپی بشه ، طبق تصویر زیر :


http://axgig.com/viewer.php?file=2544596...675243.jpg


وقتی روی سیتم خودم هستم برنامه به درستی کار میکنه با دیتا بیس ( درضمن فایل دیتابیس ام درشاخه پروژم کنار همون فایل Form1.cs قرار داره که وقتی برنامه را در ویژوال ران میکنم خودش یک کپی ازش میگیره و توی شاخه bin > Debug کنار فایل اجرایی .exe ام میگذاره .

مشکل اینجاست که وقتی من شاخه Debug را که حالا حاوی پروژه اجرایی + دیتابیس + System.Data.Sqlite.dll هستش را بر روی یه سیستم دیگه که دانت 4 روش قبلا نصب شده میبرم فرمم اجرا میشه ولی وقتی نیاز به دیتابی هست یک همچین پیغامی میده : Could not Load File or assembely 'System.Data.Sqlite.Dll" or ... یک پنجرا پیغام خطا شبیه همون خطایی که در تصویر اول هنگام اجرای test.exe میداد ولی با این مظمون که فایل system.data.sqlite.dll یا فایلهایی که به اون وابسته هستند نمتوانند لود بشوند .


حالا من سایتش را بیشتر زیرو روکردم و به سوالات رایج کاربران رسیدم در مورد نحوه نصب و اجرا برای سیستم develop و سیستم کاربر نهایی که اینها را نوشته بود :





(8) How do I install System.Data.SQLite on a development machine?
Strictly speaking, there is no need to install System.Data.SQLite on any development machine (e.g. via the setup). The recommended way to use the assemblies is:
Download the precompiled binary package for your target framework and processor architecture (e.g. 32-bit x86, .NET Framework 2.0). Extract the package to a directory named "Externals" inside your project directory. Add a reference to the "System.Data.SQLite" assembly from the "Externals" directory. If necessary (i.e. you require LINQ support), also add a reference to the "System.Data.SQLite.Linq" assembly from the "Externals" directory.
Alternatively, when using Visual Studio 2010 or later, you can simply use the NuGet package that corresponds to your target processor architecture. Installing the assemblies into the Global Assembly Cache is not recommended as it may cause conflicts with other applications installed on the machine.

(9) How do I install System.Data.SQLite on end-user machines?
Strictly speaking, there is no need to install System.Data.SQLite on any end-user machine (e.g. via the setup). The recommended way to deploy the assemblies is "application local" (i.e. copy them to the directory the application is installed to). Installing the assemblies into the Global Assembly Cache is not recommended as it may cause conflicts with other applications installed on the machine.


همانطور که میبینید تاکید کرده نیاز به نصب نداره البته من زیاد انگلیسیم خوب نیست فقط همینش را میفهمم


من یک لینک دیگه اش را دانلود کردم که این طور نوشته :




Precompiled Binaries for 32-bit Windows (.NET Framework 4.0) sqlite-netFx40-binary-bundle-Win32-2010-1.0.82.0.zip
(1.71 MiB)
This binary package features the mixed-mode assembly and contains all the binaries for the x86 version of the System.Data.SQLite 1.0.82.0 (3.7.14) package. The Visual C++ 2010 SP1 runtime for x86 and the .NET Framework 4.0 are required.
(sha1: 6f6cdfddb08f254b744e7088b4825db02bec73da)



فایل Dll هاس رو بجای فایل Dll های خودم در سیستم طرف کپی کردم ولی بازم فایده نداشت

یکی گفت این فایل را : SQLite.Interop.dll بگذار کنار برنامه اجراییت در سیستم کاربر نهایی ولی بازم نشد

فقط وقتی برنامه Setup ای که روی سیستم خودم نصبکرده بودم را روی سیستم کابر نهایی هم نصب کنم مشکل حل میشه

واقعا خسته شدم باید چی کار کنم ؟
نقل قول: فقط وقتی برنامه Setup ای که روی سیستم خودم نصبکرده بودم را روی سیستم کابر نهایی هم نصب کنم مشکل حل میشه
اين نشان دهنده اين هست كه فايل شما به درستي رجيستر نشده، احتمال داره به جز اين فايل يك فايل ديگه هم مورد نياز

هست كه با نصب كامل پكيج اون هم نصب مي شه و يا ممكنه مشكل مربوط به رجيستر نبودن فايل Dll باشه كه در اين صورت

خودتون هم مي تونيد اون رو دستي رجيستر كنيد. در قسمت Run‌ ويندوز با استفاده از Regsvr32 اون رو رجيسترش كنيد.

گاهي اوقات هم مشكل مربوط به ويندوز هاي 32 و 64 بيتي هست كه بايد يا كامپوننت مخصوص اون ويندوز رو نصب كنيد

يا اينكه در ويندوز7 64 بتي بايد در فولدرهاي ديگه اي اون فايل رو كپي كنيد.
مهندس من با vb.net با همین sqlite یه پروژه نوشته بودم

واسه انتقالش از برنامه ستاپ ساختم ؛ بدون هیچ مشکلی توی ویندوز ۷ و xp نصب شد

تا اونجا هم که یادمه فایل System.Data.Sqlite.dll تنها نبود !

بهترین کار اینه ستاپ بسازی و اینجوری میتونی متوجه بشی دقیقا به چه چیزهایی احتیاج داری
من چند بار از sqlite استفاده کردم. همیشه فقط فایل System.Data.SQLite.dll رو میگذارم کنار فایل اجرایی. فک نکنم مشکل از این باشه
من به خاطر این از sqlite استفاده کردم که نخواهم چیزی نصب کنم
این Regsvr32 را چطوری باید در برنامه C# استفاده کرد.
چون ما نرم افزاری که ارائه میدهیم به کاربر دیگه خودمان دسترسی به سیستمش نداریم

راستی وقتی Setup میسازم با خود VS2010
خودش رفرانسها را Detect میکنه
من روی همه dll هایی که Detect کرده منجمله system.data.sqlite.dll کلیک میکنم بعد توی پروپرتی اون گزینه register را برابر vsdraCOM میکنم خدش پیشفرض : vsdraDoNotRegister هستش
ولی بازم رویه سیستم دیگه میبرم نمیشه . این پروژه در مرحله اول یکصد هزار تا نسخه ازش کپی میشه
دیگه واقعا نمی دانم جیکار کنم .

یک گزینه دیگه هم داره : vsdraCOMRelativePath نکنه باید این باشه !!!
بخدا من رو هفتس با این مشکل ......مواجهم.
راه حلیم واسش نیس

جون هرکی دوس داری کمک کن.


فایل dllبرا دات نت 3.5 رو از sqlite.orgدان میکنم و میارمش تو رفرنسام،
تو پروپرتیش میگه Runtame :2

برا دات نت 4 نصب میکنم و پروژمم دات نت 4 میسازم.اخطار میده.
:X(: :X(: :X(: :X(: :X(: :X(: :X(: