加载Kusto.Data.dll遇System.Runtime.dll加载异常的技术问询
解决Kusto.Data.dll加载时的系统依赖问题
问题分析
PowerShell 5.1基于.NET Framework,直接加载面向.NET Standard/.NET Core的Kusto.Data.dll时,会因为依赖的.NET Standard组件(如System.Runtime.dll、System.Data.Common.dll)未正确引用而报错。
解决方案
1. 直接通过程序集名称引用
对于.NET Framework的标准DLL,无需指定完整路径,直接写程序集名称即可,PowerShell会自动从全局程序集缓存(GAC)加载:
$kustoDllPath = "你的Kusto.Data.dll文件路径" Add-Type -LiteralPath $kustoDllPath -ReferencedAssemblies @( "System.Runtime", "System.Data.Common" )
2. 手动指定DLL路径(若GAC加载失败)
如果上述方法无效,可以从.NET Framework的安装目录获取这些DLL,默认路径如下:
System.Runtime.dll:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Runtime.dllSystem.Data.Common.dll:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Data.Common.dll
对应的命令示例:
$frameworkPath = "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\" Add-Type -LiteralPath $kustoDllPath -ReferencedAssemblies @( Join-Path $frameworkPath "System.Runtime.dll", Join-Path $frameworkPath "System.Data.Common.dll" )
3. 更省心的方案:加载NuGet包的完整依赖集
建议直接通过NuGet安装Kusto.Data包,然后加载包目录下的所有依赖DLL,避免手动处理引用:
# 假设已通过NuGet将Kusto.Data安装到当前目录的packages文件夹 $packagesRoot = Join-Path $PWD.Path "packages\Kusto.Data.*\lib\netstandard2.0" $allDlls = Get-ChildItem -Path $packagesRoot -Filter *.dll Add-Type -Path $allDlls.FullName
注意事项
- PowerShell 5.1对.NET Standard组件的支持有限,若频繁遇到依赖问题,建议升级到PowerShell 7+,它对.NET Core/.NET Standard的兼容性更好。
- 确保
Kusto.Data.dll的版本与你的.NET Framework版本兼容(建议使用支持.NET Framework 4.6.1及以上的版本)。
内容的提问来源于stack exchange,提问作者user9297554
相关产品推荐
相关产品推荐

