“在C:\ Program Files(x86)\ Microsoft SDKs \ NuGetPackages \中找不到版本为4.1.1的软件包System.Net.Http。”

时间:2019-05-02 14:05:47

标签: c++ visual-studio-2017 nuget

我正在尝试评估用于显示PDF文件的软件SDK。它带有一些示例项目,但是在构建C ++项目时遇到了问题。我很确定这是我本地环境的问题,但我不知道如何解决它:

这些项目是作为Visual Studio解决方案提供的,将在Visual Studio 2017中使用。第一次打开该项目时,我被告知要安装缺少的功能(VS17是以前没有任何工作负载的普通安装):

Install Universal Windows Platform development and C++ universal Windows Platform tools

安装完该文件并与平台工具集和一般平台目标设置打交道之后,我终于可以构建C ++库部分,该部分创建一个.dll文件供其他2个C ++项目使用。 (我还可以确认这正常工作,因为还包括的C#项目使用该库就可以了。)


但是对于剩下的2个C ++项目,我在构建时遇到此错误:

The package System.Net.Http with version 4.1.1 could not be found in C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\. Run a NuGet package restore to download the package. 
FunctionDemo    
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets  
377

不幸的是,我不知道“使用NuGet软件包还原下载它们”是什么。意味着在这种情况下-在Visual Studio中使用Manage NuGet Packages...时,解决方案和所有项目都没有列出。所以我什至不知道这种依赖来自哪里。 (也许我已经安装了常规SDK的那些部分?)


双击错误消息将打开C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets,并显示以下内容:

<ResolveNuGetPackageAssets Condition="Exists('$(FrameworkInjectionLockFile)')"
                           NuGetPackagesDirectory="$(FrameworkInjectionPackagesDirectory)"
                           RuntimeIdentifier="$(NuGetRuntimeIdentifier)"
                           TargetMonikers="$(NuGetTargetMonikerToInject)"
                           ProjectLockFile="$(FrameworkInjectionLockFile)">

但是我想这很标准。这能告诉我错误的来源吗?


在文件系统C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\System.Net.Http\4.1.1上确实不存在。尝试手动填充它的任何尝试(将nuget软件包手动下载到项目中,然后使用我可以在线找到的任何解决方案或命令运行,将结果复制到此处)。


如果发现C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\是包源Microsoft Visual Studio Offline Packages,我可以在Visual Studio 2017中通过选项-> NuGet包管理器->包源查看它,但在那里禁用则没有任何改变关于错误消息。


我找错地方了吗?
这真的是我的本地问题还是项目问题?
我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我通过从另一位开发人员那里获得C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\System.Net.Http\4.1.1文件夹来“修复”此问题。然后错误消息切换到其他软件包,所以最后他将完整的C:\Program Files (x86)\Microsoft SDKs\NuGetPackages发送给我,然后我复制了文件夹,直到最终建立为止。

仍然不知道是什么原因造成的,一定是缺少Visual Studio认为已安装但实际上不是的有效负载或SDK:/

让问题悬而未决,希望有人能知道真实修复程序。

答案 1 :(得分:0)

从Visual Studio 2017升级到2019后,这发生在我身上。虽然文件不相同,但我的错误是:

  

错误APPX0702:有效负载文件'C:\ Program Files(x86)\ Microsoft   SDK \ NuGetPackages \ System.Private.ServiceModel \ 4.1.3 \ runtimes \ win7 \ lib \ netcore50 \ System.Private.ServiceModel.dll'   不存在。

无论出于何种原因,升级后,VS 2017和VS 2019都在C:\ Program Files(x86)\ Microsoft SDKs \ NuGetPackages ...中寻找它,但是我发现它实际上存在于类似命名的文件夹C中:\ Program Files(x86)\ Microsoft SDKs \ UWPNuGetPackages ...代替。我认为在VS 2019安装期间是否已创建此目录?

我手动将文件复制到了要查找的位置,然后构建最终成功了。潜在的问题尚未解决,但也许比我聪明的人可以解释为什么这首先发生。