我有一个包和 nuspec 文件,我通过将相关程序集的 dll 复制到与我的 nuspec 文件位于同一文件夹中的 lib 文件夹中来构建该文件。这一切都很好,花花公子,这里没有问题。
我有第二个包,它通过 nuget 引用第一个包,因此为了构建它的包,我遵循相同的过程,但在 nuspec 文件中添加了一个依赖项元素。当我从发行版复制到 lib 时,它还需要依赖的 dll。
由于这被标记为依赖项,我可以从 lib 文件夹中删除它(我希望它通过 nuget 下载,不包含在当前包中)。
我有一个包和 nuspec 文件,我通过将相关程序集的 dll 复制到与我的 nuspec 文件位于同一文件夹中的 lib 文件夹中来构建该文件。这一切都很好,花花公子,这里没有问题。
我有第二个包,它通过 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 包都将自动作为依赖项包含在 NuGet 包中,即使您尚未在 nuspec 文件中指定依赖项也是如此。然后,这些依赖项还将包括创建包时外部库的版本。
从NuGet 2.5开始,还有一个新功能可以自动解决同一解决方案中项目之间的依赖关系。使用 v2.5,您可以运行以下命令:
nuget pack projectfile1.csproj -IncludeReferencedProjects
这也将导致对 Project2 的 NuGet 依赖项。如果 Project2 没有作为 NuGet 包公开(即它没有 nuspec 文件),Project2 的 dll 将作为文件包含在 Project1 的 NuGet 包中。
做了一些测试后发现添加依赖项不需要dll在lib中。该依赖项假定它将由 Nuget 解决。这可以通过通过 nuget GUI 创建一个新的包文件并添加一些依赖项来确认。请注意它们在保存后如何不显示在 lib 文件夹中。