问题描述
我正在使用 Visual Studio Code 构建一个包含 .NET 5 和 Entity Framework Core 的类库。
但是,我无法引用 Entity Framework Core,并且我不断收到错误,就好像它不存在一样。
这是项目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<packagereference Include="Microsoft.EntityFrameworkCore" Version="5.0.7" />
<packagereference Include="Microsoft.EntityFrameworkCore.Relational" Version="5.0.7" />
<packagereference Include="Microsoft.EntityFrameworkCore.sqlServer" Version="5.0.7" />
<packagereference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.7" />
</ItemGroup>
</Project>
使用 dotnet add package
这些是我已经做过的尝试:
- 重启OmniSharp
- 恢复软件包 (
dotnet package restore
) - 使用较低版本的 Entity Framework Core (5.0.0)
具体问题和错误信息在这里,一直都在这里,所以没有其他智能编辑器可能会再次关闭这个问题:
结果仍然相同,我在 using 上收到一条错误消息,告诉 EntityFrameworkCore 命名空间在 Microsoft 命名空间中不存在。但是,IntelliSense 显示EntityFrameworkCore。
我还能尝试什么?
解决方法
正如在问题的评论中所解释的,虽然来自 build 和 intellisense 的错误消息指向特定的 .cs 文件,但当我在这个项目上使用 dotnet build 时,没有显示任何错误。 >
但是,该项目是解决方案的一部分,其中 A 引用 B 引用 C 和 C 是有错误的项目。
构建解决方案导致错误直接指向项目 C,从而错误地认为 C 是问题所在。不是。
按照评论中的建议并在 Visual Studio 中打开解决方案,可以更好地将问题识别为解决方案中的问题。完成此操作后,就找到了问题的解决方案。
解决方案是将包含在项目 C 中的引用添加到主项目 A 中。项目 C 中的相同 Entity Framework Core 包也包含在项目 A 中,这解决了问题,使解决方案能够编译。
然而,这不是最终正确的解决方案。我收到了很多反馈,建议这不是 .NET Core 中的常见行为,我知道这也不是旧 .NET 版本中的常见行为。谜团仍然存在:为什么我需要向项目 A 添加与项目 C 相同的引用?
这个谜团的线索可能是项目 A 是一个 Azure Function 项目。但是,我不知道这会如何影响整个解决方案。
无论如何,它都在处理固定引用。