我有一个包和nuspec文件,我是通过将相关程序集的dll复制到lib文件夹中构建的,该文件夹与我的nuspec文件位于同一文件夹中。这一切都工作得很好,这里没有问题。
我有第二个包,它通过nuget引用第一个包,因此为了构建它的包,我遵循了相同的过程,但在nuspec文件中添加了一个依赖元素。当我从release复制到lib时,它也需要依赖的dll。
因为这被标记为依赖项,所以我可以将它从by lib文件夹中删除(我希望通过nuget下载它,而不是包含在当前包中)。
发布于 2013-05-02 16:19:34
在做了一些测试之后,结果证明添加依赖项并不需要dll在库中。该依赖项假定它将由Nuget解决。可以通过nuget GUI创建一个新的包文件并添加一些依赖项来确认这一点。请注意,它们在保存后不会显示在lib文件夹中。
发布于 2013-05-01 06:27:06
我不确定我是否准确地理解了您的场景,但一般来说,我可以说:根据您创建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包中。
https://stackoverflow.com/questions/16300110
复制相似问题