首页 文章

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

提问于
浏览
85

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

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

3 回答

  • 134

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

    nuget.exe update -self
    

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

    您可以通过修改.nuget \ nuget.targets来添加上述命令,从而在还原时自动更新nuget.exe . 我不确定它是否常见,并且向后兼容性很少会破坏 .

  • 31

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

  • -1

    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>
    

相关问题