当"混合模式组装"和"单独的互操作dll"版本都提供第三方组件时,每种组件的优缺点是什么?
一个很好的例子是System.Data.SQLite.
以上链接有这样的说法:
只有在出于某种原因必须将汇编二进制文件部署到全局程序集缓存的情况下,才应使用[混合模式汇编]程序包.
但为什么?混合模式程序集似乎在我的项目中工作正常,没有安装GAC(只需xcopy到应用程序的exe目录).有一个更少的DLL是很好的.这感觉整洁.那么缺点是什么?
反之亦然,为什么一个人会赞成这两个DLL"native-dll + interop-dll"版本?
我正在努力寻找有关System.Data.SQLite关于各种.NET数据类型的行为的文档。
例如,System.Data.SQLite如何在SQLite数据库中存储.NET布尔值?有几种可能的方法:
反之亦然–如何从SQLite中解析布尔值?System.Data.SQLite是否期望某种格式?那是什么格式?
缺少有关此问题的文档令人沮丧。也许我找的地方不对?
注意:这不是专门关于布尔值的问题。我正在寻找说明所有.NET数据类型行为的文档。
考虑一个返回结构的方法,如下所示:
Public Function DoWork() As MyStructure
Return New MyStructure(1.5, 1.7, 1.1, 55.9)
End Function
Run Code Online (Sandbox Code Playgroud)
在这种情况下,.NET是否创建并初始化一次或两次MyStructure值?
编辑:我的预感是,调用DoWork必须涉及.NET从一开始就推送堆栈上的返回值.否则,怎么会Return回到调用代码?所以这是我正在谈论的第一次初始化.
第二次初始化将在Return语句中,其中参数1.5,1.7,1.1,55.9初始化一个新MyStructure值.上Return,.NET会再覆盖上新的返回值堆栈现有的值.
问题是,我对.NET的工作原理知之甚少.我对Stacks如何工作的概念是基于在DOS下,在80年代早期尝试在Pascal中编码的模糊回忆.我不知道.NET/Windows如何做这些事情!