我有一个包和nuspec文件,我通过将相关程序集的dll复制到一个lib文件夹来构建,该文件夹与我的nuspec文件位于同一文件夹中。这一切都很好,花花公子,这里没有问题。
我有第二个引用第一个via nuget的包,所以构建它的包我遵循相同的过程但是在一个依赖元素中添加到nuspec文件中。当我从发布到lib复制时,它也需要依赖的dll。
由于这被标记为依赖,我可以从lib文件夹中删除它(我希望它通过nuget下载,不包含在当前包中)。
答案 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文件夹中。