93

自 Nuget 1.5 以来,我的团队一直在使用启用包还原选项来使包不受我们的源代码控制。当 Nuget 1.6 发布时,我们注意到一个问题,即它没有将包拉下来,并将其追踪到 .nuget 文件夹中的 Nuget.exe,需要更新到 1.6 以匹配包管理器。

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

4

3 回答 3

154

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

nuget.exe update -self

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

可以通过修改 .nuget\nuget.targets 以添加上述命令,在还原时自动更新 nuget.exe。我将以那里的恢复命令为例。但我不确定它是否值得,nuget.exe 更新并不常见,并且向后兼容性应该很少中断。

于 2012-04-11T18:32:24.910 回答
32

我发现处理此问题的最佳方法是简单地删除 .nuget 文件夹并重新启用解决方案范围的包还原。如上所述,您可以在构建中添加自我更新命令,但如果版本之间发生更改(或从解决方案中删除引用),则不会更新目标或配置文件。也许这没什么大不了的,但这是确保您拥有最新的 exe 和配置文件的可靠方法。归根结底,只有在您需要访问新命令或新版本最终出现重大更改时,更新才是一个问题。

于 2012-05-25T18:19:07.917 回答
-3

请参阅 David Ebbo 在他的博客上的帖子

基本上,您需要做的就是在 .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>
于 2014-11-04T17:31:19.123 回答