Sam*_*Sam 21 .net-core asp.net-core azure-functions .net-5
我有一个 API 和一个单独的 Azure Functions 应用程序。我将我的 API 应用程序升级到.NET 5
,它运行良好。在 API 应用程序的解决方案中,我也有在 Azure Functions 应用程序中引用的类库项目。这些类库是netstandard2.1
项目。
自从这次更新(在此期间我还将所有 NuGet 包更新到最新版本)之后,我的 Azure Functions 应用程序停止工作。我收到以下错误:
无法加载文件或程序集“Microsoft.Extensions.Configuration.Abstractions,Version=5.0.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”。该系统找不到指定的文件。值不能为空。(参数'提供者')
我注意到有涉及Microsoft.Extensions.*
软件包的重大更改,他们的建议是直接安装导致问题的软件包。所以我Microsoft.Extensions.Configuration.Abstractions
手动添加到我的 Azure 函数 - 在它作为Microsoft.Extensions.Configuration
包的依赖项安装之前。这是关于此的信息:https :
//github.com/dotnet/aspnetcore/issues/21033
问题仍然存在。我什至尝试Microsoft.Extensions.Configuration
在 API 和 Functions 应用程序中降级,但我仍然遇到相同的错误。
知道如何解决这个问题吗?
小智 38
如果从 .NET Core 3.1 升级到 .NET 6 时出现此错误,则需要将 Azure Functions 版本更改为 v4,它可以修复此错误。
bin*_*yDi 18
山姆的评论应该被接受为正确答案。我尝试将其降级Microsoft.Extensions*
(在我的情况下Microsoft.Extensions.Logging.Console
)从5.0.0
to3.1.0
并且错误消失了。太棒了!
Dan*_*ook 10
添加此答案是为了帮助任何人从 .NET 3.1 升级到 .NET 6.0。
首先,根据 @Jeff 的回答,请确保v4
在 Azure Functions 项目.csproj
文件中引用:
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
然而,就我而言,这已经确定了。
Azure Function 在本地运行良好,但是在 Azure DevOps 管道中我收到了 OP 描述的错误。
我注意到在本地调试Azure Function时,控制台输出:
Azure Functions Core Tools
Core Tools Version: 4.0.3928 Commit hash: 7d1d4a32700695bbf290a871c7492fde84bb767e (64-bit)
Function Runtime Version: 4.0.1.16815
Run Code Online (Sandbox Code Playgroud)
就我而言,我实际上是在 Azure DevOps 管道中运行Azure Function 来进行 e2e 测试。为此,我首先使用以下 npm 命令在构建代理上安装 Azure Function Core Tools:
npm install azure-functions-core-tools -g
但是,这会安装azure-functions-core-tools@3.0.3904
(版本 3.x - 不是最新版本 4.x)。
然后,我安装了 Azure Function Core Tools (v4),例如通过使用此 npm 命令进行安装。
npm i -g azure-functions-core-tools@4 --unsafe-perm true
这(对我来说)解决了错误。
无论这是否是你的具体场景,如果使用 Azure Function Runtime v4 和 .NET 6,请确保你使用的是 Azure Function Core Tools v4.x。
正如@binaryDi 在他们的回答中提到的,您需要降级引用Microsoft.Extensions.Configuration.Abstractions
.
这可能有点麻烦,因为它不会告诉您哪些包实际上正在引用Microsoft.Extensions.Configuration.Abstractions
包/命名空间。
对于我来说,我不得不更新Microsoft.Extensions.Caching.Memory
和Microsoft.EntityFrameworkCore.SqlServer
之前5凡是被引用的dotnet 5应该被降级为Azure的函数运行一个版本。
小智 5
我在将 ac# 函数项目从 NETCORE 3.1 升级到 .NET 6 时也遇到了这个错误。
我在项目(.csproj)中设置了以下内容。
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
Run Code Online (Sandbox Code Playgroud)
并且还更改了 Function App - 配置部分(Azure 门户)中的应用程序设置值
"FUNCTIONS_EXTENSION_VERSION" from "~3" to "~4"
Run Code Online (Sandbox Code Playgroud)
这为我解决了问题。
归档时间: |
|
查看次数: |
11354 次 |
最近记录: |