我找不到一些nuget软件包(VS 2019,asp.net core 2.2)。我发现在我的.nuget文件夹和VS中找不到System.ComponentModels.Annotations,像其他所有软件包一样,它旁边没有“展开”箭头:
在我的.nuget文件夹中:
我尝试清理我的packages文件夹,然后重新构建以获取所有软件包。我尝试过update-package -reinstall。我试过直接安装system.componentmodel.annotations(而不是将其作为依赖项安装)。我的解决方案构建良好,但是在硬盘驱动器上的任何位置都找不到此软件包。我还注意到Microsoft.AspNetCore.Razor.Design表现出完全相同的行为。
答案 0 :(得分:1)
当NuGet还原使用PackageReference
用于软件包的项目(所有SDK样式的项目,以及选择加入传统项目的项目)时,它将写入obj\project.assets.json
文件,这是MSBuild用来完成的其余的构建。
看着我的测试项目的packageFolders
部分,我看到了:
"packageFolders": {
"c:\\git\\test\\globalPackages\\": {},
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {}
},
请注意,我有一个nuget.config
,它将全局软件包文件夹从用户配置文件全局软件包文件夹重定向到其他地方,因此,我创建的临时/伪造软件包不会污染我的真实开发环境。仅供参考,以防万一您为什么看不到c:\users\zivkan\.nuget\packages
。
但是请注意,有两个软件包文件夹。
在System.ComonentModel.Annotations
的{{1}}部分中寻找libraries
,我看到:
project.assets.json
看到路径显示 "System.ComponentModel.Annotations/4.5.0": {
"sha512": "UxYQ3FGUOtzJ7LfSdnYSFd7+oEv6M8NgUatatIN2HxNtDdlcvFAf+VIq4Of9cDMJEJC0aSRv/x898RYhB4Yppg==",
"type": "package",
"path": "system.componentmodel.annotations/4.5.0",
"files": [
// list of every file in package
]
},
,这意味着它可以位于system.componentmodel.annotations/4.5.0
和/或c:\git\test\globalPackages\system.componentmodel.annotations\4.5.0
之一或两者中。
对于尝试在Powershell中加载它的用例,您可以尝试在C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.componentmodel.annotations\4.5.0
目录中加载其中一个程序集。选择您认为与您的Powershell版本兼容的TFM。
由于解决方案资源管理器没有曲折的角度来扩展软件包,请在lib\*
的{{1}}部分中找到该软件包,您将看到以下内容:
targets
换句话说,该软件包没有引入任何资产或其他NuGet依赖项。因此,在解决方案资源管理器中没有什么可扩展的。
在这种特定情况下,这是因为project.assets.json
具有运行时内置的程序集,而 "System.ComponentModel.Annotations/4.5.0": {
"type": "package",
"compile": {
"ref/netcoreapp2.0/_._": {}
},
"runtime": {
"lib/netcoreapp2.0/_._": {}
}
},
程序包具有其编译时元数据。这就是为什么我问您为什么要寻找包装。如果您使用netcoreapp2.0
来查找构建在编译期间使用的确切Microsoft.NETCore.App
,则会发现无法加载的仅元数据引用程序集。但是我在上面提供了有关如何找到包目录的说明,您可以在project.assets.json
目录之一中查找可加载的dll,以尝试在Powershell中进行加载。