当前位置: 首页 > 知识库问答 >
问题:

在解决方案内的项目上使用时缺少NuGet包

郁承运
2023-03-14

我看过这个答案:

编辑。csproj文件并更正解决方案文件夹(包含packages文件夹)的相对路径为我解决了这个问题。

但是我不知道该编辑什么。

我正在Visual Studio 2013中制作一个C项目。我有一个包含三个项目的解决方案。其中一个项目需要Nuget包。

我在我的解决方案上使用Manage NuGet软件包来安装NuGet包。从那里我选择了一个需要这个包的项目。我还使用了Enable NuGet Package Restore。

通过这样做,我最终在解决方案目录中获得了一个. nuget和包文件夹。

当我尝试构建需要包的项目时,我收到了错误:

此项目引用此计算机上缺失的NuGet包。请启用NuGet包还原以下载它们。有关详细信息,请参见http://go.microsoft.com/fwlink/?LinkID=322105.缺失的文件是……\cpprestsdk.v120.winapp.msvcstl.dyn.rt\-dyn.2.9.1\构建\本机\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets.

如果我按照提到的路径,假设它相对的目录是项目的项目目录,那么“丢失的文件”就在那里。

有这个问题的项目,是我以前单独使用的一个项目(有它自己的解决方案),并且已经被复制粘贴到这个有三个项目的解决方案中。所以我才提到了另一个问题的答案和帖子的顶部。该答案建议编辑一个项目文件。如果我打开我的。vcxproj文件我看到这个:

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
    <Import Project="..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" />
    <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
    <Import Project="..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" />
    <Import Project="..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" />
  </ImportGroup>
  <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'))" />
    <Error Condition="!Exists('..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets'))" />
    <Error Condition="!Exists('..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
    <Error Condition="!Exists('..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
  </Target>

我非常不确定要编辑什么。

我可以猜测,也许某些路径应该从项目目录的相对路径更改为解决方案目录的相对路径。但通过编辑到:

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
    <Import Project="packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" />
    <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
    <Import Project="packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets" Condition="Exists('packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" />
    <Import Project="packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets" Condition="Exists('packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" />
  </ImportGroup>
  <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'))" />
    <Error Condition="!Exists('packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets'))" />
    <Error Condition="!Exists('packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
    <Error Condition="!Exists('packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
  </Target>

Visual Studio会给我一个错误,指出:已经添加了具有相同键的项目。然后,项目在解决方案浏览器中标记为(加载失败)。

我在这里做错了什么?

共有1个答案

温峻熙
2023-03-14

通过这个回答我找到了自己的解决方法。

在.vcxproj文件中,我删除了以下内容:

<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'))" />
    <Error Condition="!Exists('packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.winapp.msvcstl.dyn.rt-dyn.targets'))" />
    <Error Condition="!Exists('packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
    <Error Condition="!Exists('packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.2.9.1\build\native\cpprestsdk.v120.windesktop.msvcstl.dyn.rt-dyn.targets'))" />
  </Target>

我现在可以构建这个项目了。

这可能不是最佳解决方案,因为这些错误条件的存在是有原因的。但是编辑路径没有帮助。

 类似资料:
  • 在我的Visual studio 2015 update 3中,当我将解决方案文件夹复制到另一台windows计算机时,我遇到了以下错误。 错误此项目引用了此计算机上缺少的NuGet包。使用NuGet包还原来下载它们。如需详细资讯,请参阅http://go.microsoft.com/fwlink/?LinkID=322105.遗失的档案是..\包\Microsoft。net . compiler

  • 我创建了空的WebAPI项目,并将该项目签入TFS。生成时出现以下错误: 错误:此项目引用了此计算机上缺少的NuGet包。使用NuGet包还原来下载它们。如需详细资讯,请参阅http://go.microsoft.com/fwlink/?LinkID=322105.遗失的档案是..\包\Microsoft。net compilers . 1 . 0 . 0 \ build \ Microsoft

  • 本文向大家介绍使用IDEA启动项目遇见ClassNotFoundException的解决方案,包括了使用IDEA启动项目遇见ClassNotFoundException的解决方案的使用技巧和注意事项,需要的朋友参考一下 一. 错误现象 本地开发 SpringBoot 项目的时候,在集成 MyBatis 查询数据库的时候,使用 IDEA 启动项目的时候,有时候会遇见如下的报错: Caused by:

  • 问题内容: 我正在尝试创建由4个项目组成的ASP.NET 5解决方案的映像。结构如下: FlashTools(ASP.NET 5类库) 模型(ASP.NET 5类库) QuizzCorrector(ASP.NET 5 Web应用程序) QuizzService(ASP.NET 5类库) 我有一个简单的Dockerfile,看起来像这样: 但不确定放在哪里。在我的解决方案的根文件夹中global.j

  • 我一直在使用xamarin studio,当我从MVVMcross下载一个示例项目时,它工作得很好。它完美地编译和部署设备。 但是,当我在visual studio中打开项目时,由于某些原因,会有许多包丢失。有办法处理吗?我在Visual studio 2013中使用Nuget 2.8 当我按以下方式打开Nuget时,会有一个按钮来恢复丢失的包。我点开了。

  • 我的STS版本:3.7.1.RELEASE,内部版本Id:201510041213,平台:Eclipse Mars。1(4.5.1)在选择例如Spring Starter project时没有创建正确的项目 当与我现有的一个项目进行比较时,我可以看到缺少了Builder。创建的项目仅包含Maven Builder 我的参考项目有Maven、Java和Spring project Builders。