.NET标准类库不使用.nuspec
文件;有一个"包"项目设置中的选项卡,您可以在其中输入NuGet包的所有元数据。它们位于.csproj
文件中。
我想用项目A和B创建一个解决方案,其中项目B依赖于项目A.两者都需要将NuGet作为单独的包进行。但是如果有人为B安装NuGet包,它也应该为A安装包。
如何为.NET标准类库指定此简单依赖项?我并不认为添加引用就足以做到这一点。
答案 0 :(得分:2)
答案 1 :(得分:2)
NET Standard .csproj文件分别使用PackageReference
和ProjectReference
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
到&#39; Newtonsoft.Json&#39; NuGet中的包被标记为依赖项,而ProjectReference
包含在单个解决方案中的ClassLibrary1项目中。
当SuperPackage项目在build&#39;上使用选中&#39; Generate NuGet包构建时,我得到以下SuperPackage.nupkg:
查看此文档了解更多详情:https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files