解决Visual Studio依赖项

时间:2019-07-30 03:27:57

标签: c# nuget

我正在解析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)。

但是我遇到了一些情况-摘录就是其中一种-在本地nuget存储库中不存在指定的DLL(Microsoft.IdentityModel.JsonWebTokens/5.3.0/lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll)。实际上,库部分显示了存储库路径(Microsoft.IdentityModel.JsonWebTokens/5.3.0文件夹中不存在的存储库路径(Microsoft.IdentityModel.JsonWebTokens)。

但是带有“残破”参考的项目可以正确构建,并且可以正常运行。

对于其他人应该如何解决这些“损坏的”存储库路径的见解,我将不胜感激。如果有人知道project.assets.json的在线文档,那也很好。

1 个答案:

答案 0 :(得分:1)

寻找packageFolders文件的project.assets.json部分。这就是我所拥有的:

  "packageFolders": {
    "C:\\Users\\zivkan\\.nuget\\packages\\": {},
    "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {}
  },

Microsoft.IdentityModel.JsonWebTokens听起来很像ASP.NET Core会使用的东西,因此.NET Core SDK NuGetFallbackFolder听起来像是一个很可能的地方。

通过使用json文件中列出的软件包文件夹,如果在将其全局软件包文件夹重定向到默认用户配置文件位置之外的项目上使用,则您的程序也将更加健壮。