.Net Core 查找引用程序集的较低版本

.Net Core looking for a lower version of referenced assembly

提问人:rory 提问时间:9/27/2023 更新时间:9/28/2023 访问量:24

问:

嗨,我的 .net 核心项目中有一个引用 System.IO.Abstractions 17.2.3 的外部 dll

但是,当我的项目尝试加载此dll时,它会抛出以下错误:

Could not load file or assembly 'System.IO.Abstractions, Version=17.0.0.0, Culture=neutral, PublicKeyToken=96bf224d23c43e59'. The system cannot find the file specified.

我的项目project.assets.json没有引用它,我引用的 dll project.assets.json也没有引用(它是我们自己的 dll 之一)。

我尝试将其添加到我的 Web 应用程序的 csproj 中,但没有喜悦

<PropertyGroup>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

是什么原因导致它寻找 17.0.0.0 而不是 17.2.3?

C# .net-core DLL 程序集

评论

1赞 Marc Gravell 9/27/2023
程序集版本和包版本不是一回事;软件包 17.2.3 中的程序集版本很有可能是:17.0.0;编辑:已验证 - 事实上,NuGet 版本 17.2.3 包含程序集版本 17.0.0.0,因此:它正在寻找正确的版本;您是否检查过它是否在构建输出中?(您可以在此处看到这一点 - 展开右侧的 dll,例如选择 lib/net461/System.IO.Abstractions.dll 并查看下面面板中的元数据)
1赞 Marc Gravell 9/27/2023
你有没有试过确保你有一个明确的包引用?即添加到您的项目中?<PackageReference Include="System.IO.Abstractions" Version="17.2.3" />
0赞 rory 9/27/2023
@MarcGravell在\bin\Debug\net6.0中,dll的文件和产品版本为17.2.3.42299
0赞 rory 9/27/2023
@MarcGravell外部 dll 在 csproj 中具有 <PackageReference Include=“System.IO.Abstractions” Version=“17.2.3” />。你的意思是我的网络项目需要它吗?
1赞 Marc Gravell 9/28/2023
是的,软件包 17.2.3 中的文件具有程序集版本 17.0.0.0 和文件版本 17.2.3.42299 - 它们都是不同的数字,但是:这是正确的文件

答:

0赞 ΩmegaMan 9/28/2023 #1

在 Nuget 中,请确保将每个包设置为 而不是 .其他一些包可能正在获取导致主代码出现此错误的版本。[get] the latestleast version