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

时间:2013-04-30 12:37:42

标签: nuget nuget-package

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

我有第二个引用第一个via nuget的包,所以构建它的包我遵循相同的过程但是在一个依赖元素中添加到nuspec文件中。当我从发布到lib复制时,它也需要依赖的dll。

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

2 个答案:

答案 0 :(得分:2)

我不确定我的方案是否完全正确,但总的来说我可以说:根据您创建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包将自动作为依赖项包含在NuGet包中,即使您未在nuspec文件中指定依赖项。然后,这些依赖项还将包括创建程序包时外部库的版本。

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

nuget pack projectfile1.csproj -IncludeReferencedProjects

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

答案 1 :(得分:0)

经过一些测试后发现添加依赖项不需要dll在lib中。依赖性假设它将由Nuget解决。这可以通过nuget GUI创建一个新的包文件并添加一些依赖项来确认。请注意保存后它们如何显示在lib文件夹中。

相关问题