且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

无法加载文件或程序集 Microsoft.Extensions.Logging.Abstractions

更新时间:2023-02-24 17:21:34

如果其他人遇到类似问题,一些信息和解决方法可能有助于解决难题.

Some info and workaround which may help to resolve the puzzle if someone else meets similar issue.

它以奇怪的路径C:\ProgramFiles\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.logging.abstractions\2.2.0"

It is listed with a strange path "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.logging.abstractions\2.2.0"

FallBackFolders 用于共享跨用户和机器打包以降低风险空间.

FallBackFolders are something used to share packages across users and machines to reduce risk space.

它们与包源的不同之处在于包资源将被直接引用,不会被复制到用户的包文件夹中.

这就是为什么你在像 C:\Users\xxx\.nuget\packages 这样的全局包中找不到包的原因.

That's why you can't find the package in Global Packages like C:\Users\xxx\.nuget\packages.

对于版本冲突

如上所述,Microsoft.Azure.WebJobs.Extensions 的链是:

Microsoft.Azure.WebJobs.Extensions --> Microsoft.Azure.WebJobs --> Microsoft.Extensions.Logging.Abstractions(2.1.0)

并且由于您引用了 Microsoft.AspNetCore.App 包,因此它的链:

And since you reference the Microsoft.AspNetCore.App package, the chain of it:

Microsoft.AspNetCore.App(2.2.0) --> Microsoft.Extensions.Logging.Abstractions(2.2.0)

我认为这可能是版本冲突的原因.您可以删除该包以检查它是否是另一种解决方法.

I think this could be the cause of the version conflict.You can remove that package to check if it's another workaround.

此外:

如果我在 VS16.3.5 中新建一个 Azure Function 项目,我们不需要手动引用这些包:

If I create a new Azure Function project in VS16.3.5, we don't need to reference these packages manually:

    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="3.0.2" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="1.8.2" />
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="3.0.5" />
    <PackageReference Include="Newtonsoft.Json" Version="11.0.2" />

由于Microsoft.NET.Sdk.Functions 依赖于这些包,nuget 将帮助我们下载并引用它们.

Since Microsoft.NET.Sdk.Functions depends on these packages, nuget will help us downlaod and reference them.

而且我尝试了几种 Azure 函数项目,但它们都不需要 Microsoft.AspNetCore.App 包,因此如果您没有使用该包的特定理由,则不需要'不需要引用它.

And I tried several kinds of Azure functions project, but none of them need the Microsoft.AspNetCore.App package, so if you don't have specific reason to use that package, you don't need to reference it.