有没有办法在使用包还原时自动更新.nuget文件夹中的nuget.exe?

时间:2012-04-11 18:02:38

标签: nuget

我的团队一直在使用“启用程序包还原”选项,因为Nuget 1.5可以将程序包保留在源代码管理之外。当Nuget 1.6发布时,我们发现了一个问题,即没有将软件包拉下来,并将其跟踪到.nuget文件夹中的Nuget.exe,需要更新到1.6以匹配软件包管理器。

一旦Nuget被更新,更新解决方案的最佳方法是什么?我没有从工作室看到一个简单的方法来告诉解决方案文件夹中哪个版本的nuget。到目前为止,我们吹掉.nuget文件夹并重新运行Enable Package Restore命令。

3 个答案:

答案 0 :(得分:143)

我建议从命令行使用此命令更新.nuget \ nuget.exe:

nuget.exe update -self

[编辑]:首先关闭VS解决方案。如果有更新并且解决方案已打开,则将从解决方案中删除nuget.exe。

可以通过修改.nuget \ nuget.targets添加上述命令,在还原时自动更新nuget.exe。我在那里看一下restore命令作为例子。但我不确定它是否值得,nuget.exe更新并不常见,向后兼容性应该很少破解。

答案 1 :(得分:31)

我发现处理此问题的最佳方法是删除.nuget文件夹并重新启用解决方案范围的包恢复。如上所述,您可以向构建添加自更新命令,但如果版本之间存在更改(或从解决方案中删除引用),则不会更新目标或配置文件。也许它不是那么大的交易,但这是确保你拥有最新的exe和配置文件的确定方法。在一天结束时,如果您需要访问新命令或者最终在新版本中发生重大更改,则更新只是一个问题。

答案 2 :(得分:-2)

See David Ebbo's post at his blog

基本上,您需要做的就是在.sln文件旁边创建一个NuGet.Config文件,其中包含:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear/>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="aspnetwebstacknightlyrelease" value="https://www.myget.org/f/aspnetwebstacknightlyrelease/" />
  </packageSources>
</configuration>