Gig*_*igi 8 nuget-package .net-core .net-standard
.NET 标准类库不使用.nuspec
文件;项目设置中有一个“包”选项卡,您可以在其中输入 NuGet 包的所有元数据。这些都在.csproj
文件中。
我想创建一个包含项目 A 和 B 的解决方案,其中项目 B 依赖于项目 A。两者都需要作为单独的包在 NuGet 上运行。但是如果有人为 B 安装了 NuGet 包,它也应该为 A 安装包。
您如何为 .NET 标准类库指定这个简单的依赖项?我不认为添加引用就足以做到这一点。
NET Standard .csproj 文件使用MSBuild 项PackageReference
来ProjectReference
分别控制从 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>
Run Code Online (Sandbox Code Playgroud)
因此,我将PackageReference
NuGet 中的“Newtonsoft.Json”包标记为依赖项,并将ProjectReference
单个解决方案中的 ClassLibrary1 项目标记为依赖项。当使用选中的“在构建时生成 NuGet 包”来构建 SuperPackage 项目时,我得到以下 SuperPackage.nupkg:
检查此文档了解更多详细信息:https://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files
归档时间: |
|
查看次数: |
2428 次 |
最近记录: |