2

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

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

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

4

2 回答 2

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 包中。

于 2013-04-30T22:27:05.827 回答
0

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

于 2013-05-02T08:19:34.187 回答