由于Windows 10预装了winsqlite3.dll
,我想知道微软是否也提供cmdlet,以便我可以在PowerShell中使用sqlite3。
如果没有,那么在PowerShell中使用sqlite3的最标准方法是什么?
你是什么意思 …
我可以使用PowerShell访问winsqlite3.dll吗?
PowerShell默认情况下访问系统上的所有Net,以及您在脚本中使用的任何DLL,要求您使用Add-Type,[reflection.assembly], Import-Module或.Net DllImport命名空间。
您可以为系统中的几乎任何DLL执行此操作,无论它在何处。但是我没有尝试过你要问的娃娃。
# Example(s):
Import-module("C:\temp\MathFunctions.dll")
[MathFunctions.MultiClass]::Multiply(10, 2)
Import-Module "C:\Program Files (x86)\Microsoft Office 2013\LyncSDK\Assemblies\Desktop\Microsoft.Lync.Controls.Dll"
Import-Module "C:\Program Files (x86)\Microsoft Office 2013\LyncSDK\Assemblies\Desktop\Microsoft.Lync.Model.Dll"
另见:Importing a PowerShell Module
PowerShell P/Invoke Walkthrough
更新winsqlite3将无法使用上述任何方法加载。我只试过每一个。
# Errors ---
# Using either C:\Windows\SysWOW64\winsqlite3.dll or C:\Windows\System32\winsqlite3.dll
Exception : System.BadImageFormatException: Could not load file or assembly 'file:///C:\Windows\SysWOW64\winsqlite3.dll' or one of its dependencies.
The module was expected to contain an assembly manifest.
Exception : System.IO.FileLoadException: Could not load file or assembly 'C:\\Windows\\SysWOW64\\winsqlite3.dll' or one of its dependencies. The
given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
Exception : System.Management.Automation.MethodInvocationException: Exception calling "LoadWithPartialName" with "1" argument(s): "The given assembly
name or codebase was invalid. (Exception from HRESULT: 0x80131047)" ---> System.IO.FileLoadException: The given assembly name or codebase
was invalid. (Exception from HRESULT: 0x80131047)
注意:即使使用JetBrains dotPeek,它也显示为不受支持
更新根据以下内容,即使考虑使用它也可能不明智。
定义
命名空间:Microsoft.Data.Sqlite.Internal 大会:Microsoft.Data.Sqlite.dll
配置Microsoft.Data.Sqlite以使用winsqlite3.dll。这是Windows中附带的SQLite版本
1.在与SQLite进行任何其他交互之前,必须调用此方法。此API可能会在将来的版本中更改或删除。
另请参阅PowerShell GitHub案例:Question: How to import SQLite library #6050