Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从tt模板访问SQLite数据库的SharpDevelop

从tt模板访问SQLite数据库的SharpDevelop
EN

Stack Overflow用户
提问于 2014-04-17 17:48:44
回答 2查看 1K关注 0票数 2

我想开发一个.tt模板来从SQLite数据库中生成POCOs。

我使用SharpDevelop 4.4。

这是我目前拥有的.tt ..。

代码语言:javascript
运行
AI代码解释
复制
<#@ template hostspecific="true" language="C#" #>
<#@ output extension=".txt" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Data.SQLite" #>
<#@ import namespace="System.Data" #>
<#@ import namespace="System.Data.SQLite" #>
<#@ import namespace="System.IO" #>

<#
using (SQLiteConnection db = 
       new SQLiteConnection
            (string.Format("Data Source={0}", 
             Path.Combine(Path.GetDirectoryName(Host.TemplateFile), 
                          "Test.db"))))
{
    db.Open();
}
#>

我将System.Data.SQLite.1.0.92.0 NuGet包添加到我的项目中,以便使SQLite工作。

当我运行我的模板时,我有以下错误:

代码语言:javascript
运行
AI代码解释
复制
Error running transform: System.DllNotFoundException: Unable to load DLL 'SQLite.Interop.dll': Le module spécifié est introuvable. (Exception from HRESULT: 0x8007007E)
   at System.Data.SQLite.UnsafeNativeMethods.sqlite3_config_none(SQLiteConfigOpsEnum op)
   at System.Data.SQLite.SQLite3.StaticIsInitialized()
   at System.Data.SQLite.SQLiteLog.Initialize()
   at System.Data.SQLite.SQLiteConnection..ctor(String connectionString, Boolean parseViaFramework)
   at System.Data.SQLite.SQLiteConnection..ctor(String connectionString)
   at Microsoft.VisualStudio.TextTemplating.GeneratedTextTransformation5e95cd16.TransformText()
   at Mono.TextTemplating.CompiledTemplate.Process()

抱歉法语留言..。"Le模块spécifiéest introuvable“意为”找不到指定的模块“。

看起来SharpDevelop设法从我的项目中找到了System.Data.SQLite.dll文件,但是没有找到它的本机对应SQLite.Interop.dll.

如何使SharpDevelop找到DLL?

有什么想法吗?

一旦我知道如何使SharpDevelop找到DLL并连接到我的数据库,模板的其余部分应该非常直接地实现.

谢谢你的帮助!

吉尼斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-18 09:47:12

多亏了马特沃德的输入,我终于明白了这一点!

我使用进程监视器来查找SharpDevelop在哪里查找DLL。我发现的是..。

代码语言:javascript
运行
AI代码解释
复制
C:\Users\ghigad\Projets\CS\TestT4\packages\System.Data.SQLite.Core.1.0.92.0\lib\net40\x86\SQLite.Interop.dll
C:\Users\ghigad\Projets\CS\TestT4\packages\System.Data.SQLite.Core.1.0.92.0\lib\net40\Win32\SQLite.Interop.dll
C:\Program Files (x86)\SharpDevelop\4.4\AddIns\Misc\TextTemplating\x86\SQLite.Interop.dll
C:\Program Files (x86)\SharpDevelop\4.4\AddIns\Misc\TextTemplating\Win32\SQLite.Interop.dll
C:\Program Files (x86)\SharpDevelop\4.4\ADDINS\MISC\TEXTTEMPLATING\SQLite.Interop.dll
C:\Program Files (x86)\SharpDevelop\4.4\AddIns\Misc\TextTemplating\x86\SQLite.Interop.dll
C:\Program Files (x86)\SharpDevelop\4.4\AddIns\Misc\TextTemplating\Win32\SQLite.Interop.dll
C:\Users\ghigad\Projets\CS\TestT4\packages\System.Data.SQLite.Core.1.0.92.0\lib\net40\x86\SQLite.Interop.dll
C:\Users\ghigad\Projets\CS\TestT4\packages\System.Data.SQLite.Core.1.0.92.0\lib\net40\Win32\SQLite.Interop.dll
C:\Program Files (x86)\SharpDevelop\4.4\AddIns\Misc\TextTemplating\x86\SQLite.Interop.dll
C:\Program Files (x86)\SharpDevelop\4.4\AddIns\Misc\TextTemplating\Win32\SQLite.Interop.dll
C:\Program Files (x86)\SharpDevelop\4.4\ADDINS\MISC\TEXTTEMPLATING\SQLite.Interop.dll
C:\Program Files (x86)\SharpDevelop\4.4\AddIns\Misc\TextTemplating\x86\SQLite.Interop.dll
C:\Program Files (x86)\SharpDevelop\4.4\AddIns\Misc\TextTemplating\Win32\SQLite.Interop.dll
C:\Users\ghigad\Projets\CS\TestT4\packages\System.Data.SQLite.Core.1.0.92.0\lib\net40\SQLite.Interop.dll
C:\Program Files (x86)\SharpDevelop\4.4\bin\SQLite.Interop.dll
C:\Windows\SYSWOW64\SQLite.Interop.dll
C:\Windows\system\SQLite.Interop.dll
C:\Windows\SQLite.Interop.dll
C:\Windows\SYSWOW64\SQLite.Interop.dll
C:\Program Files\Common Files\Microsoft Shared\Windows Live\SQLite.Interop.dll
C:\Program Files (x86)\COMMON FILES\MICROSOFT SHARED\Windows Live\SQLite.Interop.dll
C:\Program Files\Java\jdk1.6.0_30\bin\SQLite.Interop.dll
C:\Program Files\apache-ant-1.8.2\bin\SQLite.Interop.dll
C:\cygwin\bin\SQLite.Interop.dll
C:\Windows\SYSWOW64\SQLite.Interop.dll
C:\Windows\SQLite.Interop.dll
C:\Windows\SYSWOW64\wbem\SQLite.Interop.dll
C:\Windows\SYSWOW64\WindowsPowerShell\v1.0\SQLite.Interop.dll
C:\Program Files\Intel\WiFi\bin\SQLite.Interop.dll
C:\Program Files\Common Files\Intel\WirelessCommon\SQLite.Interop.dll
C:\Program Files (x86)\COMMON FILES\Roxio Shared\DLLShared\SQLite.Interop.dll
C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared\SQLite.Interop.dll
C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared\SQLite.Interop.dll
C:\Program Files (x86)\COMMON FILES\Roxio Shared\OEM\12.0\DLLShared\SQLite.Interop.dll
C:\Program Files (x86)\Roxio\OEM\AudioCore\SQLite.Interop.dll
C:\Program Files (x86)\MICROSOFT SQL SERVER\100\Tools\Binn\SQLite.Interop.dll
C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLite.Interop.dll
C:\Program Files\Microsoft SQL Server\100\DTS\Binn\SQLite.Interop.dll
C:\Program Files (x86)\MICROSOFT SQL SERVER\100\Tools\Binn\VSShell\Common7\IDE\SQLite.Interop.dll
C:\Program Files (x86)\MICROSOFT SQL SERVER\100\DTS\Binn\SQLite.Interop.dll
C:\Program Files\TortoiseSVN\bin\SQLite.Interop.dll
C:\Program Files (x86)\QuickTime\QTSystem\SQLite.Interop.dll
C:\Program Files (x86)\Windows Live\Shared\SQLite.Interop.dll

因此,结果是搜索了相当多的目录,然后使用my PATH变量的内容搜索文件.

Matt将dll放在SharpDe信封的bin目录中的想法是可行的,但我不喜欢将文件保存在应用程序的目录中.这意味着如果我将SharpDevelop更新到一个更新的版本,我将不得不再次复制这些文件.

从日志中,我猜将dll从./packages/content/net40 40/x86复制到./packages/lib/net40 40/x86也会起到这个作用.这里同样的事情..。如果我玩弄SQLite的Nuget包目录结构,每次我从源代码管理或升级到更新版本时,我都必须再次复制该文件.

最后,我决定将DLL复制到C:\Program (x86)中的一个目录中,并将其添加到PATH中。

效果很好!

谢谢马特让我走上正轨!

票数 1
EN

Stack Overflow用户

发布于 2014-04-18 03:37:44

SharpDevelop将找到您的System.Data.SQLite.dll,因为您的项目将有它的引用。

我最初的想法是:

对于SQLite.Interop.dll,可以在项目中添加对其的引用,或者如果不想这样做,可以指定.dll的路径。你应该能够做这样的事情:

代码语言:javascript
运行
AI代码解释
复制
<#@ assembly name="$(SolutionDir)packages\System.Data.SQLite.Core.1.0.92.0\content\net45\x86\SQLite.Interop.dll" #>

不幸的是,这将无法工作,因为SQLite.Interop.dll不是.NET程序集。因此,解决方法/黑客是通过将SQLite.Interop.dll放在路径上,从而使SharpDevelop可以使用它。最简单的方法是将其复制到SharpDe信封的bin文件夹中:

代码语言:javascript
运行
AI代码解释
复制
C:\Program Files (x86)\SharpDevelop\4.4\bin
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23146198

复制
相关文章
位、字节、字的区别
字(Word)代表计算机处理指令或数据的二进制数位数,是计算机进行数据存储和数据处理的运算的单位。
Lokinli
2023/03/09
6740
原子操作和互斥锁的区别
这个系列的文章里介绍了很多并发编程里经常用到的技术,除了Context、计时器、互斥锁还有通道外还有一种技术--原子操作在一些同步算法中会被用到。今天的文章里我们会简单了解一下Go语言里对原子操作的支持,然后探讨一下原子操作和互斥锁的区别。
KevinYan
2020/06/16
4.6K0
Jquery的属性操作和DOM操作
       3 val()    :     获取或设置表单内容    (原生JS使用value)
用户3159471
2018/09/13
1.4K0
Jquery的属性操作和DOM操作
SDRAM的操作和配置
在有的项目中我们需要扩展外扩SDRAM,所以需要操作SDRAM,以使用STM32H743主控芯片的FMC外设控制器为例子来说明,可以使用STM32CubeMX生成配置初始化代码,完了后需要添加一些代码才能保证SDRAM正常工作,本篇笔记主要介绍SDRAM的操作和读写。
用户1605515
2020/04/26
6920
比特、字节、字
计算机里的信息是以什么样的形式存在计算机里的呢?是不是说计算机里有一张纸,然后可以把信息写上去呢? 我想大家首先想到的硬盘……和内存。 这就是比特、字节和字的关系。
mwangblog
2018/07/04
3160
HTTP 1.0 和 HTTP 1.1 的主要区别是什么
HTTP 1.0 最早在网页中的使用是在 1996 年,那个时候只是使用一些较为简单的网页和网络请求上,而 HTTP 1.1 则在 1999 年才开始广泛应用于现在的各大浏览器网络请求中,同时 HTTP 1.1 也是当前使用最为广泛的 HTTP 协议。 两者的主要区别体现在:
happyJared
2019/06/20
4.1K0
常用的高防有哪几类?主要的区别是什么?
有一些用户受到DDOS攻击的时候,不知道自己该选择什么样的高防来防御攻击,墨者安全今天主要讲下常用的高防有哪几类?以及主要的区别?高防主要分为HTTPS高防、TCP高防、CDN高防、香港高防、海外高防。
墨者安全筱娜
2019/04/15
2.5K0
常用的高防有哪几类?主要的区别是什么?
NFS操作和部署
如果出现以上结果,表示服务端配置成功 最好在本地挂载一次,挂载成功在取消挂载,至少可以确认服务端配置正确,能够挂载 6) 设置开机自启动并检查
jackxiao
2021/11/16
5630
Cache 和 Buffer 都是缓存,主要区别是什么?
原文链接:https://www.zhihu.com/question/26190832/answer/830615125
业余草
2019/11/12
2750
Cache 和 Buffer 都是缓存,主要区别是什么?
提到这个问题,可能意味着题主意识到了两者的相关性。的确,他们确实有那么一些联系。
老钱
2019/09/25
1.6K0
Cache 和 Buffer 都是缓存,主要区别是什么?
Docker:镜像操作和容器操作
古时的风筝
2018/01/08
1K0
Cache 和 Buffer 都是缓存,主要区别是什么?
首先cache是缓存,buffer是缓冲,虽然翻译有那么一个字的不同,但这不是重点。
良月柒
2019/11/07
3610
css特殊操作和效果
(8) 渐变 background-image: repeating-linear-gradient(red, yellow 10%, green 20%);
前端小tips
2021/12/07
4250
css特殊操作和效果
java中的字节流和字符流的区别是什么?
java当中有两种流,一种是字节流(byte stream): 以1字节(8-bit)为单位进行读/写,一次处理一个字节。另一种是字符流(character stream):,以字符为单位,一次处理一个字符。
马克java社区
2021/05/06
4560
java中的字节流和字符流的区别是什么?
字节、字、bit、byte的关系
字 word 字节 byte 位 bit,来自英文bit,音译为“比特”,表示二进制位。 字长是指字的长度
全栈程序员站长
2022/09/01
3K0
Cache 和 Buffer 都是缓存,主要区别是什么?【转】
作者:Towser 链接:https://www.zhihu.com/question/26190832/answer/32387918 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 不知道为什么这问题突然火了,更新一个一句话总结:cache 是为了弥补高速设备和低速设备的鸿沟而引入的中间层,最终起到加快访问速度的作用。 而 buffer 的主要目的进行流量整形,把突发的大数量较小规模的 I/O 整理成平稳的小数量较大规模的 I/O,以减少响应次数(比如从网上下电影
233333
2018/07/04
2K0
Nilearn中的基本操作和查看
Rose小哥今天给大家介绍一款用于神经成像工具Nilearn以及它的基本操作和数据保存查看。
脑机接口社区
2020/06/30
1.4K0
Nilearn中的基本操作和查看
Clojure文件操作和惰性序列
数据一般都是存储在纯文本文件当中,存储的形式多种多样。本文,我会介绍如何在Clojure中读取和写入这些数据。
lambeta
2018/08/17
3.2K0
Python列表常见操作和注意
常见操作 列表很常用,每一个元素之间用 , 隔开。 列表中的每一个元素可以是任意类型的数据 数字,字符串,列表,元组,集合,字典 列表可进行的操作 索引(从0开始)、切片、加、成员检查(in,not in),for循环。 Python 表达式 结果 描述 len([1, 2, 3]) 3 长度 [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 组合 ['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复 3 in [1, 2, 3] Tru
py3study
2020/01/19
4530
点击加载更多

相似问题

智能家居操作和DialogFlow操作之间的主要区别

10

伪操作和机器操作的区别?

12

Oozie >异步操作和同步操作之间的区别是什么?

16

Delphi字节操作和Java

11

增加虚拟字节的操作和函数

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档