我有一个包和nuspec文件,我通过将有问题的程序集的dll复制到一个lib文件夹来构建,该文件夹与我的nuspec文件位于同一文件夹中 . 这一切都很好,花花公子,这里没有问题 .
我有第二个包引用第一个via 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 pack projectfile1.csproj
从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文件夹中 .
2 回答
我不确定我的方案是否正确,但总的来说我可以说:根据您创建NuGet包的方式,您甚至可能不必指定依赖项 . 给定具有以下结构的Visual Studio解决方案:
如果运行
nuget pack projectfile1.csproj
,则Project1中包含的任何NuGet包将自动作为依赖项包含在NuGet包中,即使您尚未在nuspec文件中指定依赖项 . 然后,这些依赖项还将包括创建程序包时外部库的版本 .从NuGet 2.5开始,还有一项新功能可以自动解决同一解决方案中项目之间的依赖关系 . 使用v2.5,您可以运行以下命令:
这也将导致对Project2的NuGet依赖 . 如果Project2没有作为NuGet包暴露(即它没有nuspec文件),Project2的dll将作为文件包含在Project1的NuGet包中 .
经过一些测试后发现,添加依赖项不需要dll在lib中 . 依赖性假设它将由Nuget解决 . 这可以通过nuget GUI创建一个新的包文件并添加一些依赖项来确认 . 请注意保存后它们如何显示在lib文件夹中 .