Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 为什么Microsoft AspNetCore应用程序在依赖项中显示两次_Asp.net Core - Fatal编程技术网

Asp.net core 为什么Microsoft AspNetCore应用程序在依赖项中显示两次

Asp.net core 为什么Microsoft AspNetCore应用程序在依赖项中显示两次,asp.net-core,Asp.net Core,创建一个新的.net核心web api项目 查看依赖项 见下图 为什么Microsoft.AspNetCore.App需要两次? 它位于默认csproj中: <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App" /> <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" P

创建一个新的.net核心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:\ProgramFiles\dotnet\SDK\\Sdks\Microsoft.NET.SDK.Web\SDK

从.NET Core 3.0开始,这些引用将发生变化,您可以使用
元素而不是
元素来引用框架,以避免歧义。有关更多信息,请参阅以下GitHub问题:


谢谢,这就把事情弄清楚了。我假设它构建成功,即使我从csproj中删除它,因为sdk在目标文件中引用了它,正如您所说,当前(对于版本2.2)的最佳实践是在项目文件中包含
,而不包含版本号。