仅有依赖关系的空Nuget包

4

我有一个项目,希望将所有的依赖项放入一个NuGet包中。这样,当需要时,我只需要引用一个NuGet包,而不是10个。这种做法可行吗?

当我创建一个库时,我删除了类文件,只引用了依赖项,但无法创建一个NuGet包。


为什么这很重要?你的项目将会拉取 packages config 中的所有内容,只需将所有依赖项放在那里,让 NuGet 完成其工作即可。或者您是在询问如何从您自己创建的类库中创建一个 NuGet 包? - maccettura
此外,这种策略会在依赖包更新时阻止通知。你实际上是在暂停更新。 - Mike L
这些是我创建的软件包,这样我就知道它们何时更新。我试图创建一个更干净的软件包配置,但如果它仍然导入它们而不仅仅是单个软件包及其依赖项,则这是无意义的。 - TheDizzle
1个回答

3

您可以通过在创建包时将IncludeBuildOutput属性设置为false来完成此操作。

例如[使用VS 2017] -

  1. 文件>新建项目>.NET Core类库
  2. 右键单击项目并编辑csproj以具有以下内容 -
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
    <PackageId>MetaPackage</PackageId>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <IncludeBuildOutput>false</IncludeBuildOutput>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
    <PackageReference Include="NuGet.Versioning" Version="4.7.0-rtm.5104" />
    <PackageReference Include="NUnit" Version="3.10.1" />
  </ItemGroup>

</Project>
  1. 右键单击并构建项目
  2. 查看<project_dir>\bin\Debug\MetaPackage.1.0.0.nupkg中的包

这将创建一个没有\lib的包,并且nuspec文件应该具有包引用依赖项。

您可以在此处了解更多关于IncludeBuildOutput的信息。


请注意,现在的解决方案会导致“NuGet.Build.Tasks.Pack.targets(221, 5): [NU5128] nuspec 的依赖组中声明的某些目标框架与 lib/ref 文件夹中的目标框架没有完全匹配。请查看下面的操作列表:
  • 为 netstandard2.0 目标框架添加 lib 或 ref 程序集” 此外,关于 IncludeBuildOutput 的文档已经消失了。
- Lilith River

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接