【问题标题】:NuGet Package Restore is not restoring packages on buildNuGet 包还原不会在构建时还原包
【发布时间】:2012-10-27 19:46:03
【问题描述】:

我正在将我们的源代码从 Vault 移动到 TFS,而不是为迁移或任何事情而烦恼,只是在 Vault 中获取最新版本并将其添加到 TFS。

该解决方案有多个项目,每个项目至少有一个 NuGet 包。我正在尝试让包还原再次工作。它在 Vault 中工作(但不是它应该的方式)。我的最后期限有点过了,一开始它不起作用,所以我添加了一个 Pre-Build 事件来针对每个项目的 packages.config 运行 nuget.exe。

TFS 构建服务对此抱怨,所以我试图让它“正常”工作。

  1. 我已经在 Visual Studio 工具菜单中设置了选项。
  2. 我已安装 NuGetEnablePackageRestore 并运行修复程序。
  3. 我已经验证包目录是源代码管理,但是是空的。
  4. 我已验证每个项目文件都包含以下内容:
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

诊断级别详细程度的构建表明每个项目都会评估这些属性,但 nuget.targets 中的 RestoreCommand 从未执行。

有什么想法吗?

我已尝试通过这些链接实施解决方案:

  1. nuget - package restore not working
  2. NuGet Package Restore Not Working - 我确实在那里发布了一个问题/评论,要求澄清......
  3. http://nuget.codeplex.com/workitem/1879

编辑

此外,我发现在构建期间正在评估 RestoreCommand 属性。诊断详细度显示:

RestoreCommand = (set EnableNuGetPackageRestore=true) && "C:\Source\Kiersted Direct And Related\Direct\Kiersted\.nuget\nuget.exe" install "packages.config" -source "@(PackageSource)" -o "C:\Source\Kiersted Direct And Related\Direct\Kiersted\packages"

【问题讨论】:

    标签: tfs msbuild nuget package-managers


    【解决方案1】:

    我想通了,我在这里找到了答案:MSBuild not running BuildDependsOn tasks from an imported project

    问题(在查看了诊断详细度构建输出后)是 BuildDependsOn 设置未设置。我的项目文件每个都有导入语句

    <Import Project="$(SolutionDir)\.nuget\nuget.targets" />
    

    但该语句位于 XML 树的开头。显然,Microsoft.CSharp.targets 的导入可能会干扰该导入,因此会干扰 BuildDependsOn。

    我的解决方案是将 nuget.targets 导入移动到 Microsoft.CSharp.targets 导入下方。现在一切都构建得很漂亮。

    【讨论】:

    • 感谢您的信息。但是,我的导入语句已经在 Microsoft.CSharp 导入之后,我会得到同样的错误。我会继续挖掘,看看这里发生了什么。
    • 在您的构建输出中,尝试指定诊断。它输出了大量的日志记录,但问题出在某个地方。我就是这么想的。
    • 我将此视为警告:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (1605):无法解析此引用。找不到程序集“MongoDB.Bson”。请检查以确保该程序集存在于磁盘上。如果您的代码需要此引用,您可能会遇到编译错误。 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (1605):无法解析此引用。找不到程序集“MongoDB.Driver”。检查以确保该程序集存在于磁盘上。如果您的代码需要此引用,则可能会出现编译错误
    • 我认为这是一个提示路径问题,如下所示:stackoverflow.com/questions/21620083/… 但我还没有完全修复它。
    • 是的,这些可能很麻烦。这些警告是在尝试恢复 nuGet 包之前发生的吗?你有没有进入 RestoreCommand 行?
    【解决方案2】:

    这个答案需要与其他答案一起考虑。就我而言,Visual Studio 决定不将 packages.config 自动添加到源代码管理中。因此,在 Nuget 还原期间,该文件没有进入构建服务器以供考虑。

    【讨论】:

      猜你喜欢
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-30
      • 2020-01-08
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      相关资源
      最近更新 更多