如何修复丢失的NuGet包错误? 我在Git下的VisualStudio中有一个C++控制台应用程序,其中有一个子模块静态库叫做“代码>库子模块化Os/Cuth>”。此LibrarySubmoduleSolution使用Windows实现库NuGet包
在我的如何修复丢失的NuGet包错误? 我在Git下的VisualStudio中有一个C++控制台应用程序,其中有一个子模块静态库叫做“代码>库子模块化Os/Cuth>”。此LibrarySubmoduleSolution使用Windows实现库NuGet包,git,visual-studio,nuget,nuget-package,nuget-package-restore,Git,Visual Studio,Nuget,Nuget Package,Nuget Package Restore,在我的vcpconsoleApplicationSolution主解决方案中下载Git子模块并在该解决方案中还原NuGet软件包后,我收到以下错误: 严重性代码说明项目文件行 抑制状态错误此项目引用NuGet 此计算机上缺少的程序包。使用NuGet包 还原以下载它们。有关详细信息,请参阅 . 丢失的文件是 ..\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.
vcpconsoleApplicationSolution
主解决方案中下载Git子模块并在该解决方案中还原NuGet软件包后,我收到以下错误:
严重性代码说明项目文件行抑制状态错误此项目引用NuGet 此计算机上缺少的程序包。使用NuGet包 还原以下载它们。有关详细信息,请参阅 . 丢失的文件是 ..\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets。图书馆子模块解决方案
D:\Projects\Tests\VCPPConsoleApplicationSolution\LibrarySubmoduleSolution\LibrarySubmoduleSolution\LibrarySubmoduleSolution.vcxproj 166严重性代码说明项目文件行
抑制状态错误C1083无法打开包含文件: “wil/resource.h”:没有这样的文件或目录
VCPPConsoleApplication解决方案
D:\Projects\Tests\VCPPConsoleApplicationSolution\LibrarySubmoduleSolution\LibrarySubmoduleSolution\SomeClass.h 3. 我在Google和Stackoverflow上搜索答案,甚至在编辑我的
LibrarySubmoduleSolution.vcxproj
文件并将packages文件夹从。\packages
更改为$(SolutionDir)\packages
:
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets" Condition="Exists('$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets')" />
</ImportGroup>
<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('$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets'))" />
</Target>
此项目引用此计算机上缺少的NuGet包。使用NuGet Package Restore下载它们。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105. 缺少的文件是{0}。
我仍然无法生成错误:
严重性代码说明项目文件行抑制状态
错误C1083无法打开包含文件:“wil/resource.h”:没有此类文件
或
目录VCPPConsoleApplicationSolution D:\Projects\Tests\VCPPConsoleApplicationSolution\LibrarySubmoduleSolution\LibrarySubmoduleSolution\SomeClass.h3
只有在我在主控制台应用程序项目中安装了Windows实现库NuGet包之后,它才开始生成,没有错误
以下是快速重现错误的主要和子模块解决方案:
如何修复丢失的NuGet包错误
我从github下载了您的项目,遇到了与您描述的相同的问题
主要问题是您的nuget包已损坏,或者您的项目引用nuget包时出现问题
请遵循这些步骤,我通过它们解决了问题
建议
1)或删除C:\Users\xxx(当前用户名)\.nuget\packages下的所有文件
2)关闭VS实例,删除解决方案文件夹下的.VS
隐藏文件夹和任何输出文件夹,如x64
文件夹
3)在工具下运行命令更新软件包-重新安装
-->Nuget软件包管理器-->软件包管理器控制台在项目中重新安装该软件包
然后,错误将消失。我跟着这些,终于明白了
更新1
===========================
很抱歉没有详细观察您的问题。问题出在xxx.vcxproj
文件中
问题在于:
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets'))" />
<Import Project="$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets" Condition="Exists('$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets')" />
我想知道您为什么要使用$(SolutionDir)
而不是。
在您的问题中,$(SolutionDir)\packages
的意思是xxx(SolutionName)\\ packages
$(solutiondir)
表示xxxx\LibrarySubmoduleSolution\
,它已经包含\
解决方案
请删除\
(SolutionDir)和包之间的\
,并更改为:
$(SolutionDir)包\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets在两个xml节点中
==============================
更新2
除了,如果主项目vcpconsoleapplicationsolution
引用了LibrarySubmoduleSolution
并使用了它的文件,您还应该在主项目中包含这样的库路径,否则,它将无法在主项目vcpconsoleapplicationsolution
中找到资源.h
实际上,当您在主项目vcpconsoleapplicationsolution
中引用LibrarySubmoduleSolution
中的someclass.h
时,someclass.h
文件将复制到vcpconsoleapplicationsolution
,在这种环境下,在LibrarySubmoduleSolution
中安装时,没有这样的库wil/resource.h
。在主项目中,它没有安装该nuget包(自动包含存在的include路径resource.h
),因此会发生错误
作为建议
您可以右键单击vcpconsoleapplicationsolution
properties-->VC++目录
-->添加xxxx\vcpconsoleapplicationsolution\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\include
到包含目录中
或在主项目中安装该nuget软件包,以自动包含库路径。我认为您的nuget软件包已损坏,您的项目引用nuget软件包时出现问题。首先,关闭vs实例,删除解决方案文件夹下的.vs
隐藏文件夹,然后重新启动