【问题标题】:Missing Nuget.targets缺少 Nuget.targets
【发布时间】:2019-12-15 02:50:40
【问题描述】:

我熟悉 C# 和 Visual Studio 2017。似乎 VS 说 Nuget 包丢失了。当我尝试构建解决方案时,控制台输出以下内容:

“此项目引用此计算机上缺少的 NuGet 包。启用 NuGet 包还原以下载它们。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 D:\xxxx\xxxx\Desktop\Koodipohjaa \trunk\.nuget\NuGet.targets"

项目从原始位置复制到桌面(由于原因)。在 /trunk/ 我有一个名为“packages”的文件夹,但没有“.nuget”文件夹。我已经从解决方案级别尝试了“恢复 nuget 包”,它说没有什么要更新的。当我打开项目中的引用时,有一个非常可爱的黄色小三角形,里面有所有的包。

我已经尝试更新包,将它们全部删除并自动重新安装等。在“nuget 包管理器”中,我尝试了所有可能的包还原。

【问题讨论】:

  • 更多信息: - 整个解决方案和子项目都被复制了 - 最初解决方案是用 Visual Studio 2017 专业版制作的,我使用的是 2017 社区 - 所有开发都是用 Visual Studio 2017 完成的
  • 嗨朋友,这个问题有什么更新吗?请让我知道这个问题是否仍然存在:(

标签: c# visual-studio nuget nuget-package-restore


【解决方案1】:

请尝试:

1.在VS2017中,进入Tools menu=>Nuget Package Manager=>Package Manager settings,确保你勾选了这两个选项:

2.在解决方案资源管理器中右击项目=>Unload Project=> 右击项目名称和Edit the xx.csproj,你会发现EnsureNuGetPackageBuildImports目标格式如下:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\xxx')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\xxx'))" />
  </Target>

删除目标并保存文件。然后右键单击项目以重新加载项目并运行重建。

我假设您的项目文件(xx.csproj)中可能有这样的目标,它试图找到nuget.targets 文件,删除目标以检查它是否有帮助。 类似问题here

【讨论】:

  • 非常感谢。这是唯一对我有用的解决方案。不管我做什么,那个目标都在搞乱整个过程。我正在从 VS2015 迁移到 VS2019。这应该被标记为答案。
【解决方案2】:

这个问题很容易解决。由于 .nuget 文件夹是强制性的,因此我设法获取了该文件夹的副本并将其粘贴在正确的位置。我在 VS 2017 和 2019 中尝试了很多技巧和窍门,但都没有奏效。现在 .nuget 文件夹已经存在,一切正常。

【讨论】:

  • 您好,朋友,感谢您的分享,请将您的回复标记为答案,这将有助于其他社区成员更轻松地搜索此有用信息。见this,它只是一个提醒:)
【解决方案3】:

.nuget/nuget.targets 是 Visual Studio 2010 到 Visual Studio 2013 之间 NuGet 与 Visual Studio 的旧“集成”。Visual Studio 2015 及更高版本不再具有创建此文件的功能,因为 NuGet 的集成更加直接。由于您复制了项目,而不是整个解决方案,因此您没有复制 .nuget/ 文件夹。你说源代码库中没有.nuget 文件夹,但是我看不到原始解决方案如何编译成功。

我建议您按照有关如何migrate to automatic package restore 的说明进行操作。它只是撤消了 VS2013 及更早版本中“启用包还原”所做的操作。

【讨论】:

  • 我复制了该解决方案以及该解决方案中的所有子项目,因为它们位于原始位置。该解决方案也是使用我目前使用的 VS 2017 制作的。
  • Visual Studio 2017 从来没有创建.nuget/nuget.targets 文件的功能,因此不可能在那里创建它。在 VS2019 中创建新项目并将所有其他文件复制到新项目中,或者按照我链接到的文档中的说明中的说明从您的 csproj 中删除对 nuget.targets 的引用。
  • Here is a comment 我在帮助其他客户解决不同问题时写道,我在其中准确列出了当您使用 VS2010-VS2013 功能时写入 csproj 的内容,因此您可以确切地看到什么是好的从您的 csproj 中删除。
【解决方案4】:

正如您所说,您将项目从其他位置复制到桌面,我假设您不复制 sln 文件。尝试在桌面添加一个 sln 文件,然后将项目添加到该 sln,然后尝试恢复 nuget。要记住的一件事请尝试确保相对于 sln 文件和项目位置的文件夹结构层次结构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2021-09-22
    • 2021-05-14
    • 2014-01-23
    • 2020-06-22
    • 2012-04-21
    • 2018-04-25
    相关资源
    最近更新 更多