我有一个包和 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/