nuget - 我是否需要将标记为依赖项的 DLL 添加到 nuget lib 文件夹

标签 nuget nuget-package

我有一个包和 nuspec 文件,通过将相关程序集的 dll 复制到 lib 文件夹中来构建,该文件夹与我的 nuspec 文件位于同一文件夹中。这一切都运行良好,没有任何问题。

我有第二个包,它通过 nuget 引用第一个包,因此为了构建它的包,我遵循相同的过程,但将依赖项元素添加到 nuspec 文件中。当我从发布版本到 lib 进行复制时,它也会获取依赖的 dll。

由于这被标记为依赖项,我可以从 lib 文件夹中删除它(我希望它通过 nuget 下载,不包含在当前包中)。

最佳答案

我不确定我是否准确地了解了您的场景,但总的来说,我可以说:根据您创建 NuGet 包的方式,您甚至可能不需要指定依赖项。给定具有以下结构的 Visual Studio 解决方案:

* Solution1
  - Project1
    * projectfile1.csproj
      - using external libraries through NuGet
      - project reference to Project2
    * nuspecfile1.nuspec
  - Project2
    * projectfile2.csproj
    * nuspecfile2.nuspec

如果运行 nuget pack projectfile1.csproj,Project1 中包含的任何 NuGet 包都将自 Action 为依赖项包含在 NuGet 包中,即使您尚未在 nuspec 文件中指定依赖项也是如此。这些依赖项还将包括创建包时外部库的版本。

截至NuGet 2.5 ,还有一个新功能可以自动解决同一解决方案中项目之间的依赖关系。使用 v2.5,您可以运行以下命令:

nuget pack projectfile1.csproj -IncludeReferencedProjects

这也将导致 NuGet 对 Project2 的依赖。如果 Project2 未作为 NuGet 包公开(即它没有 nuspec 文件),则 Project2 的 dll 将作为文件包含在 Project1 的 NuGet 包中。

关于nuget - 我是否需要将标记为依赖项的 DLL 添加到 nuget lib 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16300110/

相关文章:

visual-studio - 如何为 Visual Studio 项目禁用 "transitive package management"

c# - 如何: Social Media Website

c# - 如何继承NuGet包中引用的程序集

sdk - Microsoft.AspNetCore.App 2.1.1升级 "Blocked by project"

c# - .NET — 管理不同版本的 NuGet 包的常见依赖关系

visual-studio - nuget 包是否包含 pdb 符号

c# - 我的 NuGet 包与 .NET Core 兼容吗?

c# - 在 Linux 中,当我使用 nuget pack 时,它会引发 "Cannot create a package"

visual-studio - 如何在 Visual Studio 扩展 (vsix) 中包含 Nuget 包

c# - 找不到 OpenAPI 描述