我在Visual Studio中的Git下有一个C++控制台应用程序,其中有一个名为LibrarySubmoduleSolution
的子模块静态库,这个LibrarySubmoduleSolution
使用Windows实现库NuGet包。
在我的VCPPConsoleApplicationSolution
主解决方案中下载Git子模块并在解决方案中恢复NuGet包后,我收到以下错误:
严重程度代码说明项目文件行
隐藏状态错误此项目引用了此计算机上缺少的NuGet包。请使用NuGet包还原来下载这些包。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件为..\packages\Microsoft. Windows.实现库. 1. 0. 200519. 2\build\native\Microsoft. Windows.实现库. targets.库子模块解决方案
D:\项目\测试\VCPP控制台应用程序解决方案\库中子模块解决方案\库中子模块解决方案\库中子模块解决方案. vcxproj 166严重性代码描述项目文件行
隐藏状态错误C1083无法打开包含文件:"wil/资源. h":无此文件或目录
VCPP控制台应用程序解决方案
D:\项目\测试\VCPP控制台应用程序解决方案\库中子模块解决方案\库中子模块解决方案\某类. h 3
我在谷歌上搜索答案,在这里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>
我仍然无法构建,错误如下:
严重性代码说明项目文件行隐藏状态错误C1083无法打开包含文件:"wil/资源. h":没有这样的文件或目录VCPP控制台应用程序解决方案D:\项目\测试\VCPP控制台应用程序解决方案\库中子模块解决方案\库中子模块解决方案\某个类. h 3
只有当我在我的主控制台应用程序项目中安装Windows实现库NuGet包后,它才开始构建,没有错误。
以下是快速重现错误的主要模块和子模块解决方案:https://github.com/KulaGGin/VCPPConsoleApplicationSolutionhttps://github.com/KulaGGin/LibrarySubmoduleSolution
2条答案
按热度按时间5w9g7ksd1#
如何修复丢失NuGet包的错误?
我从github下载了你的项目,遇到了和你描述的一样的问题。
主要问题是您的Nuget包已经损坏,或者您的项目引用Nuget包时出现问题。
请按照以下步骤操作,我通过这些步骤解决了问题。
C:\Users\xxx(current user name)\.nuget\packages
下的所有文件.vs
隐藏文件夹和任何输出文件夹(如x64
文件夹)update-package -reinstall
,以便在项目中重新安装该软件包。===========================
抱歉,没有详细观察您的问题。问题在
xxx.vcxproj
文件中。问题位于:
我想知道为什么要使用
$(SolutionDir)
而不是..
。$(SolutionDir)\packages
表示xxx(SolutionName)\\packages
。$(SolutonDir)
表示xxxx\LibrarySubmoduleSolution\
,并且它已经包含\
。请删除
$(SolutionDir)
和packages
之间的\
并更改为:$(SolutionDir)packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\build\native\Microsoft.Windows.ImplementationLibrary.targets
在两个XML节点中。VCPPConsoleApplicationSolution
引用了LibrarySubmoduleSolution
并使用了它的文件,那么您还应该在主项目中包含这样的库路径,否则它在主项目VCPPConsoleApplicationSolution
中找不到resource.h
。VCPPConsoleApplicationSolution
中的LibrarySubmoduleSolution
引用someclass.h
时,someclass.h
文件将被复制到VCPPConsoleApplicationSolution
中,在这种环境中,您在LibrarySubmoduleSolution
中安装wil/resource.h
库时,没有wil/resource.h
库。在主项目中,它没有安装nuget包(自动包含resource.h
所在位置include路径),因此将发生错误。您可以右键单击
VCPPConsoleApplicationSolution
属性--〉VC++ Dirctories
--〉将xxxx\VCPPConsoleApplicationSolution\packages\Microsoft.Windows.ImplementationLibrary.1.0.200519.2\include
添加到Include Directories
中。n9vozmp42#
有时,Visual Studio可能会悄悄地进入脑死亡状态,并锁定项目或工具,这可以防止"自动"恢复发生。
在这些情况下,最好:
1.关闭Visual Studio
1.对项目/解决方案进行全面清理
1.检查任务管理器中是否有VS(即testhost.exe)中可能仍在运行的任何错误进程,并将其杀死。
1.重新启动Visual Studio并加载项目,然后重试
那么,自动软件包恢复应该会发生。