NuGet Package Restore似乎是将NuGet与源代码控制(在我的案例中为TFS)中合并的正确方法,例如在this answer和this closed question的第一条评论中。 NuGet Package Restore允许从源代码控制中获取一个解决方案,并在另一台开发者机器上构建,以自动获取所需的NuGet包。
要将NuGet Package Restore添加到解决方案,请右键单击解决方案,然后选择启用NuGet包还原。 “添加了一个名为.nuget的解决方案文件夹,其中包含NuGet.exe和一个NuGet.targets MsBuild文件。它还更改了解决方案中的每个项目以导入NuGet.targets MsBuild任务。” (引自http://docs.nuget.org/docs/Workflows/Using-NuGet-without-committing-packages)。但我正在研究的解决方案中的一些项目是实用项目,在不同的解决方案之间以及不同的开发人员之间共享,他们不需要NuGet处理的引用。
如何启用NuGet Package Restore但是从NuGet构建任务设置中排除解决方案中的某些项目?
答案 0 :(得分:4)
目前,NuGet Package Restore有一些限制,不能仅限于特定项目。 现有的NuGet工作项可以实现这一目标: #1812 - Enable Package Restore - Selective Projects
请评论/投票以提高优先级,因为它目前正在积压。
注意:在表面上,.csproj文件似乎有一个属性来支持关闭NuGet包还原,但由于另一个问题,它会不断重新开启:NuGet command line forces package restore
答案 1 :(得分:1)
您可以从要构建的第一个项目的PreBuild步骤运行脚本,该脚本遍历所有packages.config
文件并下载其内容。你需要打电话
.nuget/nuget.exe install "....\packages.config" -o "packages"
对于解决方案中的每个$(SolutionDir)
,请从packages.config
开始。
这实际上比标准解决方案更好,因为它还会下载未安装到项目中的解决方案级别的包。
在我的构建服务器上,我使用此(shell)代码段:
find -iname packages.config -print0 | xargs -0 -ti mono --runtime=v4.0.30319 .nuget/nuget.exe install {} -o "packages"