Visual studio 在2.7和2.8之间,包还原发生了什么变化?

Visual studio 在2.7和2.8之间,包还原发生了什么变化?,visual-studio,visual-studio-2012,nuget,Visual Studio,Visual Studio 2012,Nuget,我们对许多包使用内部提要。今天,我们注意到包恢复不再工作。每个包都失败,并出现以下错误: 找不到包“…”的版本“…” 有问题的项目于2013年10月4日首次提交,当时NuGet拥有2.7版 多人成功克隆了源代码管理repo,它根本没有二进制文件,而且没有人回忆起包还原的任何问题。所以要么我们都疯了,要么这一切都很顺利。 当我今天尝试做一个新的克隆并更新到第一次提交时,我得到了上面的错误。最近的提交也是如此。这是NuGet 2.8的一部分 : 但是,在执行上述任何步骤之前,NuGet会验证 同意分

我们对许多包使用内部提要。今天,我们注意到包恢复不再工作。每个包都失败,并出现以下错误:

找不到包“…”的版本“…”

有问题的项目于2013年10月4日首次提交,当时NuGet拥有2.7版
多人成功克隆了源代码管理repo,它根本没有二进制文件,而且没有人回忆起包还原的任何问题。所以要么我们都疯了,要么这一切都很顺利。
当我今天尝试做一个新的克隆并更新到第一次提交时,我得到了上面的错误。最近的提交也是如此。这是NuGet 2.8的一部分

:

但是,在执行上述任何步骤之前,NuGet会验证 同意分为两个级别:

  • Visual Studio配置为“允许NuGet下载丢失的包”
  • Visual Studio配置为“在Visual Studio中生成期间自动检查丢失的包”
  • 这两个项目都在VS选项中选中

    这种包恢复方法具有以下几个优点:

  • 无需为您的项目或解决方案启用它。Visual Studio将在您的项目启动之前自动下载丢失的包 构建和团队成员不需要了解NuGet包还原
  • 但这正是我们今天解决问题的方法:右键单击解决方案并启用包恢复。这导致了多个层面的变化

    .csproj级别

    +    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
    +    <RestorePackages>true</RestorePackages>
    
    最后,创建
    .nuget\nuget.Config
    .nuget\nuget.exe
    .nuget\nuget.targets

    作为测试,我还创建了一个新的解决方案和项目。现在我

  • 添加一个内部包
  • 建造
  • 关闭解决方案
  • 删除
    bin
    obj
    目录(就像我们的忽略文件一样)
  • 打开解决方案
  • 重新生成,并获取问题开头提到的错误
  • 当我用来自官方回购协议的一揽子方案重复这些步骤时,一切都很顺利。完全没有错误


    我已经看过了的发行说明,但是我没有看到任何与此相关的内容。发生了什么事?

    这可能是由以下问题引起的:

    与此问题相关的是,nuget.exe客户端不会遵循重定向,因此,如果您的内部nuget服务器在尝试下载包时返回302,则客户端不会遵循重定向,并且不会导致任何事情发生。值得仔细检查Fiddler跟踪,看看VS扩展是否具有相同的行为。

    它在当前版本的NuGet中是一个错误,但在夜间版本中已修复


    目前的解决办法是在Package Manager控制台中将Package source设置为All。

    您说过它在正式回购协议中不会出错;也许你的内部回购协议已经失效了?或者它需要更新以支持最新的NuGet(可能feed规格改变了?)。
    +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{6FE1C500-523A-4E05-B72E-28F14DEDB055}"
    +   ProjectSection(SolutionItems) = preProject
    +       .nuget\NuGet.Config = .nuget\NuGet.Config
    +       .nuget\NuGet.exe = .nuget\NuGet.exe
    +       .nuget\NuGet.targets = .nuget\NuGet.targets
    +   EndProjectSection
    +EndProject