我正在运行一个使用nuget包Microsoft.Extensions.Caching.Memory
的.Net Standard项目,它是从.Net Framework ASP.Net Web项目调用的。当引用此 nuget 包的代码运行时,我收到以下错误:
System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.Extensions.Caching.Abstractions, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' or one of its dependencies. The system cannot find the file specified.'
我尝试将 nuget 包添加到我的 .Net 标准项目中Microsoft.Extensions.Caching.Abstractions
但没有帮助。我也尝试将以下内容添加到我的 .Net Framework 项目中,但它也没有帮助:
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
有没有人解决这个问题?没有其他项目引用Microsoft.Extensions.Caching.Abstractions
所以我不知道为什么它找不到正确的版本。
将相同的包Microsoft.Extensions.Caching.Memory
添加到 .NET Framework 项目中。
这导致它使用与前面答案一样的 .NET Framework 目标进行构建,但不污染您的 .NET Standard 项目或要求它知道需要支持哪个版本的 .NET Framework。
我能够通过添加其他框架绑定来解决这个.Net标准dll地狱。我称之为.Net Standard项目的.Net Framework版本都是4.6.2,我无法升级,升级到4.7.*也可能解决了它,但我没有尝试它,因为它在我的情况下不可行。上面介绍的所有其他解决方案都不起作用,并且由于某种原因无法加载 nuget 包的.dll。
在我的 .Net 标准项目中,我更改了:
<TargetFramework>netstandard2.0</TargetFramework>
自:
<TargetFrameworks>netstandard2.0;net462;net47</TargetFrameworks>
当然,这将针对您需要构建的所有框架编译您的项目。