我想知道为什么特定的 NuGet 包不包含在构建输出目录中。
我运行的命令是这些:
dotnet new console
dotnet add package Newtonsoft.Json -v 13.0.3
dotnet add package System.Memory -v 4.5.1
dotnet build
此后,输出目录包含:
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 添加依赖项并不重要 - 它永远不会包含在构建输出中。
如果您查看 System.Memory NuGet 包内部,您会发现它没有适用于 .NET Core 2.1 及更高版本(其中包括 .NET 7.0)的 dll。 System.Memory 提供的类型必须已由 .NET 提供,因此不需要任何单独的 .dll。