如何防止 NuGet 在恢复包时询问是否覆盖文件?

How to do I prevent NuGet asking about overwriting a file when restoring packages?

我们最近将 Fody 添加到我们的一些项目中,在本地这很好,但是在 TeamCity 构建服务器上,这会导致问题,我可以通过 运行 [=20] 中的以下命令在本地复制=]VS2015 的包管理器控制台:

PM> Update-package -reinstall
<snip ... />
Successfully uninstalled 'Fody 1.29.4' from Example.Project
Package 'Fody.1.29.4' already exists in folder 'D:\Projects\Examples\MySolutions\packages'
File Conflict
File 'FodyWeavers.xml' already exists in project 'Example.Project'. Do you want to overwrite it?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "N"):

在构建服务器上,此消息不断重复,直到日志文件耗尽服务器数据驱动器上的所有空闲空间 space(最后的 TC 日志变成 28GB!)

我尝试了 -NonInteractive,但这似乎对构建服务器没有影响,并且在本地,在 包管理器控制台 中它说它无法识别参数:

PM> Update-package -reinstall -noninteractive
Update-Package : A parameter cannot be found that matches parameter name 'noninteractive'.
At line:1 char:42
+ Update-package -reinstall -noninteractive <<<< 
    + CategoryInfo          : InvalidArgument: (:) [Update-Package], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,NuGet.PackageManagement.PowerShellCmdlets.UpdatePackageCommand     

似乎确实有一个选项可以防止这种行为:

-FileConflictAction Ignore

这将执行默认操作(不覆盖)。

在 TeamCity 中,您可以在底部的 命令行参数 :

中的 NuGet 配置(select 高级选项)中设置此选项