visual-studio-2017 - 现有项目中缺少文件 NuGet.targets

标签 visual-studio-2017 nuget

场景是:
1. 创建一个新的解决方案
2.启用下载丢失的包
3.将项目添加到已经存在并依赖于nuget包的解决方案中
4. 构建解决方案产生错误:

... The missing file is <solution folder>\.nuget\NuGet.targets.

为什么?有什么遗漏吗?

我在 Windows 10 上使用 Visual Studio 2017 Pro

我所有的搜索都回答关于创建新解决方案并添加一个依赖于 nuget 包的新项目的场景,没关系,但是当有一个现有项目时,什么都没有。

最佳答案

<solution folder>\.nuget\NuGet.targets是 NuGet 的 Visual Studio 扩展用于在 Visual Studio 2010、2012 和 2013 中添加的文件,当您右键单击解决方案并选择“启用 NuGet 包还原”时。然后它会在您的所有项目文件中添加一个导入以导入目标文件。我最近investigating a customer issue作为调查的一部分,我发现它进行了以下更改。在 csproj 顶部附近,它添加了如下内容:

<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<RestorePackages>true</RestorePackages>

在 csproj 接近尾声时,它添加了如下内容:
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable 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('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

因此,问题在于您正在创建一个新的解决方案,但使用以这种方式修改的现有项目文件。一种选择是编辑您的 csrpoj 文件并删除这些更改。除了新解决方案之外,另一种选择是创建新项目,然后复制所有代码和内容文件。

唯一的缺点是如果你在 CI 服务器上构建并使用 packages.config,你的构建脚本需要运行 nuget.exe restore ,而使用 NuGet.targets 的项目可以只构建解决方案,而 msbuild 将根据需要执行 nuget restore。不再使用 NuGet.targets 的一个优势是还原整个解决方案比还原一个项目更快。 Visual Studio 会在构建时自动恢复包,即使在 VS2010、VS2012 和 VS2013 中也是如此,因此我个人不鼓励使用此功能,即使您使用那些旧版本的 Visual Studio。在我看来,将构建脚本减少一步的好处不值得它带来的问题。

关于visual-studio-2017 - 现有项目中缺少文件 NuGet.targets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54235147/

相关文章:

multithreading - C++ 11线程更新MFC应用程序窗口。需要SendMessage(),PostMessage()吗?

c# - Entity Framework Core 2.0 添加迁移不生成任何内容

c# - nuget.org 上的源无法访问?

nuget - AzureDevOps 不会从 AzureDevOps 源恢复包

visual-studio - 结束 Visual Studio 调试 session 时自动关闭 Chrome 或 Firefox(如 IE)

visual-studio-2017 - 无法将 SDK 导入到 Visual Studio 2017rc 中的 dotliquid build

visual-studio-debugging - VS 2017中Console.WriteLine不会输出到输出窗口

visual-studio-2012 - Visual Studio 2012 "Extensions and Updates" "Unable to connect to the remote server"

.net - Nuget 连接尝试失败 "Unable to load the service index for source"

linux - 公司代理背后的 Linux 上的 dotnet restore、NuGet 和 VS Code 问题