创建一个新的 .net core web api 项目
查看依赖关系
见下图。
为什么 Microsoft.AspNetCore.App 需要两次?
它在默认的 csproj 中:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.0.2105168" />
</ItemGroup>
并且也在SDK下。
我不明白这是什么原因,非常困惑。如果我从 csproj 中删除它并进行清理并运行,应用程序将运行
最佳答案
这是因为 Microsoft.AspNetCore.App
既是您的应用程序(NuGet 节点)的依赖项,也是您使用的 SDK 的依赖项。您可以在项目文件的顶部找到 SDK:
<Project Sdk="Microsoft.NET.Sdk.Web">
Web SDK 在其 MSBuild 目标文件之一中引用
Microsoft.AspNetCore.App
包。您可以在 SDK 安装文件夹中找到 SDK 目标:C:\Program Files\dotnet\sdk\<version>\Sdks\Microsoft.NET.Sdk.Web\Sdk
从 .NET Core 3.0 开始,这些引用将发生变化,您可以使用
<FrameworkReference>
元素而不是 <PackageReference>
元素来引用框架以避免歧义。有关更多信息,请参阅以下 GitHub 问题:关于asp.net-core - 为什么 Microsoft AspNetCore App 在 Dependencies 中显示两次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53832373/