gpt4 book ai didi

.net-core - 如何在 .NET Standard 类库中指定依赖项?

转载 作者:行者123 更新时间:2023-12-03 17:08:54 25 4
gpt4 key购买 nike

.NET 标准类库不使用 .nuspec文件;项目设置中有一个“包”选项卡,您可以在其中输入 NuGet 包的所有元数据。这些在 .csproj 中文件。

我想创建一个包含项目 A 和 B 的解决方案,其中项目 B 依赖于项目 A。两者都需要作为单独的包在 NuGet 上运行。但是如果有人为 B 安装了 NuGet 包,它也应该为 A 安装包。

您如何为 .NET 标准类库指定这个简单的依赖项?我不认为添加引用就足以做到这一点。

最佳答案

NET 标准 .csproj 文件使用 PackageReferenceProjectReference MSBuild 项分别控制从 NuGet 或您的解决方案加载的包的依赖项。它们都支持元数据标签 PrivateAssets , IncludeAssets , ExcludeAssets ,它控制您的项目在这些依赖项中究竟依赖什么以及如何依赖。默认情况下,所有依赖项都由 Visual Studio 自动生成 PrivateAssets ,这意味着这些依赖项已被使用,但它们不会被标记为项目使用者的依赖项(这将是 NuGet 中的一个包)。
所以,你只需要更换 PrivateAssets元数据与 IncludeAssets (也许具有适当的值)。
例如,我的 SuperPackage.csproj 文件如下所示:

..................
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.6.0">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Newtonsoft.Json" Version="11.0.2">
<IncludeAssets>compile</IncludeAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj">
<IncludeAssets>compile</IncludeAssets>
</ProjectReference>
</ItemGroup>
</Project>

所以,我有 PackageReference到标记为依赖项的 NuGet 中的“Newtonsoft.Json”包,以及 ProjectReference到单个解决方案中的 ClassLibrary1 项目。
当 SuperPackage 项目使用选中的“Generate NuGet package on build”构建时,我得到以下 SuperPackage.nupkg:

enter image description here

查看此文档以获取更多详细信息: https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files

关于.net-core - 如何在 .NET Standard 类库中指定依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43103000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com