最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

讓Sqlite脫離VC++ Runtime獨立運行的方法

 更新時間:2014年07月17日 11:31:28   投稿:mdxy-dxy  
這篇文章主要介紹了讓Sqlite脫離VC++ Runtime獨立運行的方法,需要的朋友可以參考下

目前手頭上的一個.NET項目用到了Sqlite,這是我第一次接觸和使用Sqlite,總體感覺還是非常不錯的。這里把我使用Sqlite的經(jīng)驗跟大家分享一下。

一.關(guān)于Sqlite  

  Sqlite是一款開源的、適合在客戶端和嵌入式設(shè)備中使用的輕量級數(shù)據(jù)庫,支持標準的SQL。

  不像SqlServer或Oracle的引擎是一個獨立的進程、通過TCP或命名管道等與程序進行通信,SQLite卻是作為程序的一個部件、一個構(gòu)成部分,使用Sqlite的方式就是直接在程序中進行API調(diào)用。

  原始的Sqlite是沒有一個向SqlServer企業(yè)管理器的可視化操作程序的,但是有個第三方開發(fā)的應(yīng)用SqliteStudio非常不錯,基本的建庫、建表、編輯數(shù)據(jù)、導(dǎo)出數(shù)據(jù)等功能都支持得很好。SqliteStudio運行截圖如下所示:

Sqlite資源鏈接:

(1)Sqlite官網(wǎng):可以從官網(wǎng)下載源碼、或下載已經(jīng)編譯好的二進制版本。支持的系統(tǒng)包括:Linux、MacOS、Windows、.NET。

(2)SqliteStudio:好用的Sqlite可視化管理器。

二.在.NET中使用Sqlite

  從官網(wǎng)下載.NET版本的Sqlite,其主要包括兩個dll:SQLite.Interop.dll、System.Data.SQLite.dll。

(1)System.Data.SQLite.dll是一個標準的托管dll,我們可以直接在.NET項目中引用并使用它,就像使用.NET自帶的System.Data命名空間中的各個對象一樣。

(2)SQLite.Interop.dll是一個非托管的dll,是Sqlite引擎核心,我們需要將其拷貝到運行目錄下,在運行時,它會被System.Data.SQLite.dll調(diào)用。

三.讓Sqlite脫離VC++運行時

  我們在項目開發(fā)完畢后測試的過程中發(fā)現(xiàn),使用了Sqlite的客戶端程序在某些機器上運行時會報錯,如下所示:

  無法加載 DLL"SQLite.Interop.DLL";由于應(yīng)用程序配置不正確,應(yīng)用程序未能啟動。重新安裝應(yīng)用程序可能會糾正這個問題。(異常來自 HRESULT:0x800736B1)

  經(jīng)過一番折騰,才發(fā)現(xiàn)是這些機器上沒有安裝VC++運行時(Visual C++ 2005 SP1 runtime),而SQLite.Interop.dll的運行是需要VC++運行時支持的。這點太不友好了。我們的項目是基于.NET 2.0開發(fā)的,windows xp sp1 及以上版本都自帶了這個Framework,而這些機器不一定安裝了VC++運行時。所以我第一反應(yīng)就是,嘗試讓Sqlite在沒有安裝VC++運行時的機器上也能正常運行。

1.方案一

  我baidu了一下,有個似乎可行的方案是這樣的:將msvcm80.dll、msvcp80.dll、msvcr80.dll這幾個動態(tài)庫也放到運行目錄下。這個方案我不太喜歡,于是我嘗試自己動手解決問題。

2.方案二

  憑借我還未完全忘記的一點VC++基礎(chǔ),我知道VC++程序在編譯時可以選擇是動態(tài)鏈接到依賴的庫還是靜態(tài)鏈接,如果是靜態(tài)連接,編譯生成的二進制程序中就相當于包含了一份依賴庫的拷貝。所以,我的想法是,重新編譯 SQLite.Interop.dll,使其靜態(tài)鏈接到VC++運行庫。我下載了Sqlite的源碼,用VS2010打開,截圖如下:

     

   SQLite.Interop.2010這個項目是核心,我們需要對它的一些設(shè)置稍微做些修改,這些小修改我花了一些時間摸索才成功,這里就略去具體的摸索過程,直接給出摸索成果:

(1)打開SQLite.Interop.2010項目屬性頁面,配置屬性 -> C/C++ -> 代碼生成 -> 運行庫,該項設(shè)置為 多線程調(diào)試 (/MTd)。

(2)繼續(xù) 配置屬性 -> 清單工具 -> 輸入和輸出 -> 嵌入清單,該項原來是“是”,改成“否”。

(3)顯示所有項目文件,然后找到SQLite.Interop.2010.props文件,并打開。刪掉其中的<INTEROP_MIXED_NAME>配置節(jié)點。

(4)從項目中移除“Resource Files”文件夾。

(5)重新編譯項目,生成的SQLite.Interop.dll便是我們所需要的。

 四.下載成果

  除非特別需求,否則大家沒有必要重復(fù)這一過程,我把生成的Sqlite二進制版本直接提供給大家下載使用。

補充:Sqlite官網(wǎng)已經(jīng)提供靜態(tài)連接的庫了
http://system.data.sqlite.org/downloads/1.0.93.0/sqlite-netFx20-static-binary-bundle-Win32-2005-1.0.93.0.zip

相關(guān)文章

  • ASP.NET Core使用IHttpClientFactory發(fā)出HTTP請求

    ASP.NET Core使用IHttpClientFactory發(fā)出HTTP請求

    這篇文章介紹了ASP.NET Core使用IHttpClientFactory發(fā)出HTTP請求的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • ASP.NET Core中的Options選項模式

    ASP.NET Core中的Options選項模式

    這篇文章介紹了ASP.NET Core中的Options選項模式,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • ASP.NET Core開發(fā)Docker部署

    ASP.NET Core開發(fā)Docker部署

    這篇文章介紹了ASP.NET Core開發(fā)Docker部署的方法,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2021-12-12
  • Blazor框架簡介

    Blazor框架簡介

    Blazor是微軟推出的基于.net平臺以及http://ASP.net?core技術(shù)的?交互式客戶Web?UI框架。這篇文章為大家簡單介紹了Blazor框架,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-01-01
  • ASP.NET2.0+SQL Server2005構(gòu)建多層應(yīng)用

    ASP.NET2.0+SQL Server2005構(gòu)建多層應(yīng)用

    ASP.NET2.0+SQL Server2005構(gòu)建多層應(yīng)用...
    2006-12-12
  • Asp.net?core前端框架Blazor介紹

    Asp.net?core前端框架Blazor介紹

    這篇文章介紹了Asp.net?core前端框架Blazor,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-06-06
  • .Net報表開發(fā)控件XtraReport介紹

    .Net報表開發(fā)控件XtraReport介紹

    這篇文章介紹了.Net報表開發(fā)控件XtraReport,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • ASP.NET 5已終結(jié),迎來ASP.NET Core 1.0和.NET Core 1.0

    ASP.NET 5已終結(jié),迎來ASP.NET Core 1.0和.NET Core 1.0

    命名是非常困難的事情,微軟這次為了和ASP.NET4.6做區(qū)分,采用了全新的命名方式ASP.NET Core 1.0,它是一個全新的框架。
    2016-03-03
  • 詳解ABP框架中的數(shù)據(jù)過濾器與數(shù)據(jù)傳輸對象的使用

    詳解ABP框架中的數(shù)據(jù)過濾器與數(shù)據(jù)傳輸對象的使用

    ABP框架是一個基于ASP.NET的Web開發(fā)框架,這里我們來詳解ABP框架中的數(shù)據(jù)過濾器與數(shù)據(jù)傳輸對象的使用,需要的朋友可以參考下
    2016-06-06
  • ASP.NET?MVC模式簡介

    ASP.NET?MVC模式簡介

    這篇文章介紹了ASP.NET?MVC模式,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2022-03-03

最新評論

宁明县| 诸暨市| 苏尼特右旗| 二连浩特市| 昭苏县| 石楼县| 漠河县| 锡林郭勒盟| 岚皋县| 穆棱市| 龙井市| 平果县| 五指山市| 阿尔山市| 玉林市| 沛县| 四子王旗| 原阳县| 七台河市| 板桥市| 正宁县| 余庆县| 县级市| 唐河县| 宿州市| 盐亭县| 固始县| 南木林县| 罗平县| 秦皇岛市| 东乌| 琼结县| 二连浩特市| 尼勒克县| 潜江市| 滦南县| 修水县| 波密县| 元氏县| 铁岭县| 象山县|