.NET Core 3.1 Azure函数用ADOMD.NET连接Power BI数据集报错如何解决
问题根因
你遇到的报错本质是.NET Core 3.1版本的Microsoft.AnalysisServices.AdomdClient.NetCore.retail.amd64库依赖Windows Desktop运行时的内置API,但Azure Functions默认的运行时宿主只会加载Microsoft.NETCore.App框架,即使你本地系统已经安装了Windows Desktop运行时,函数进程也不会主动加载该框架的依赖,因此触发了平台不支持的校验报错。
可落地解决方案
- 方案1:修改项目配置强制引入Windows Desktop运行时依赖
右键你的Azure Functions项目,编辑.csproj工程文件,在顶层<PropertyGroup>节点中添加如下配置:
该配置会告知构建工具自动关联Windows Desktop运行时的相关依赖,无需额外安装其他组件,修改完成后重新生成项目即可解决本地运行报错问题。<UseWindowsForms>true</UseWindowsForms>
若后续需要部署到Azure云端,只需确保Function App使用Windows操作系统的托管计划即可,该配置在云端Windows环境下同样生效。 - 方案2:升级ADOMD客户端包版本
19.60.0及以上版本的Microsoft.AnalysisServices.AdomdClient.NetCore包已经移除了对Windows Desktop运行时的强制依赖,你可以直接替换现有的NuGet包到最新稳定版,无需修改项目运行时配置即可正常调用连接方法。 - 方案3:切换Azure Functions运行时模型(可选)
如果你使用的是.NET隔离进程模型的Azure Functions,除了按方案1修改csproj配置外,还需要确认项目的运行时启动配置没有禁用Windows桌面组件加载,默认配置下添加UseWindowsForms节点即可正常运行。
内容的提问来源于stack exchange,提问作者Mariusz Ignatowicz
相关产品推荐
相关产品推荐

