为什么特定的 NuGet 依赖项不包含在构建输出中?

问题描述 投票:0回答:1

我想知道为什么特定的 NuGet 包不包含在构建输出目录中。

我运行的命令是这些:

  1. dotnet new console
  2. dotnet add package Newtonsoft.Json -v 13.0.3
  3. dotnet add package System.Memory -v 4.5.1
  4. dotnet build

此后,输出目录包含:

  • 我的应用程序可执行文件和 pdb
  • Newtonsoft.Json.dll

System.Memory.dll
不包含在输出目录中。

仅供参考,我的 csproj 文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
    <PackageReference Include="System.Memory" Version="4.5.1" />
  </ItemGroup>

</Project>

我了解 .NET Core 包含

System.Memory.dll
的一个版本。但在这个示例中,我想使用 System.Memory.dll 的另一个
版本,而不是 .NET Core 附带的版本。

我为哪个版本的 System.Memory 添加依赖项并不重要 - 它永远不会包含在构建输出中。

.net-core msbuild nuget
1个回答
0
投票
来自@MattWard:

如果您查看 System.Memory NuGet 包内部,您会发现它没有适用于 .NET Core 2.1 及更高版本(其中包括 .NET 7.0)的 dll。 System.Memory 提供的类型必须已由 .NET 提供,因此不需要任何单独的 .dll。

© www.soinside.com 2019 - 2024. All rights reserved.