[英]Resolving Visual Studio dependencies
我正在解析C#项目中的project.assets.json
文件,以检索项目的依赖项(我将其作为从项目文件中提取文档信息的项目的一部分来进行)。
我一直无法在线找到很多project.assets.json
文档。 它似乎包含许多部分。
这是摘录:
{
"version": 3,
"targets": {
"Microsoft.IdentityModel.JsonWebTokens/5.3.0": {
"type": "package",
"dependencies": {
"Microsoft.IdentityModel.Tokens": "5.3.0",
"Newtonsoft.Json": "10.0.1"
},
"compile": {
"lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll": {}
},
"runtime": {
"lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll": {}
}
},
},
"libraries": {
"Microsoft.IdentityModel.JsonWebTokens/5.3.0": {
"sha512": "GmiwCJPEe+V8+2GO3kD8K0IeqNHlTL0xZcHePIjyJveRn7OderxdT32aCZeJZEvz5w2Jlyag3zdyu1zkdTJo2A==",
"type": "package",
"path": "microsoft.identitymodel.jsonwebtokens/5.3.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"lib/net45/Microsoft.IdentityModel.JsonWebTokens.dll",
"lib/net45/Microsoft.IdentityModel.JsonWebTokens.pdb",
"lib/net45/Microsoft.IdentityModel.JsonWebTokens.xml",
"lib/net451/Microsoft.IdentityModel.JsonWebTokens.dll",
"lib/net451/Microsoft.IdentityModel.JsonWebTokens.pdb",
"lib/net451/Microsoft.IdentityModel.JsonWebTokens.xml",
"lib/net461/Microsoft.IdentityModel.JsonWebTokens.dll",
"lib/net461/Microsoft.IdentityModel.JsonWebTokens.pdb",
"lib/net461/Microsoft.IdentityModel.JsonWebTokens.xml",
"lib/netstandard1.4/Microsoft.IdentityModel.JsonWebTokens.dll",
"lib/netstandard1.4/Microsoft.IdentityModel.JsonWebTokens.pdb",
"lib/netstandard1.4/Microsoft.IdentityModel.JsonWebTokens.xml",
"lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll",
"lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.pdb",
"lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml",
"microsoft.identitymodel.jsonwebtokens.5.3.0.nupkg.sha512",
"microsoft.identitymodel.jsonwebtokens.nuspec"
]
},
}
}
从概念上讲,我的解析器查看targets部分并提取到项目引用的DLL的路径。 对于软件包,该路径相对于本地nuget软件包存储库(通常为C:\\Users\\<username>\\.nuget\\packages
)。
但是我遇到了某些情况-摘录就是其中一种-指定的DLL( Microsoft.IdentityModel.JsonWebTokens/5.3.0/lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll
)不存在。存在于本地nuget存储库中。 实际上,库部分显示了存储库路径( Microsoft.IdentityModel.JsonWebTokens/5.3.0
),该路径在存储库文件夹(甚至没有Microsoft.IdentityModel.JsonWebTokens
文件夹)中都不存在。
但是,带有“残破”参考的项目可以正确构建,并且没有任何错误。
我希望别人对如何解决这些“损坏的”存储库路径有任何见解。 如果有人知道project.assets.json
的在线文档,那也很好。
查找project.assets.json
文件的packageFolders
部分。 这就是我所拥有的:
"packageFolders": {
"C:\\Users\\zivkan\\.nuget\\packages\\": {},
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {}
},
Microsoft.IdentityModel.JsonWebTokens
听起来很像ASP.NET Core会使用的东西,因此.NET Core SDK NuGetFallbackFolder听起来很像。
通过使用json文件中列出的软件包文件夹,如果在将其全局软件包文件夹重定向到默认用户配置文件位置之外的项目上使用,您的程序也将更加强大。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.