project.assets.json 的对象模型是什么?我们可以使用什么库从文件中解析它?

mar*_*ark 2 nuget .net-core

我不是在谈论 Newtonsoft.Json - 我想要针对 project.assets.json 定制的实际对象模型

有图书馆吗?

p4r*_*4r1 8

在浏览dotnet/sdk存储库后,我最终找到了对NuGet/NuGet.Client存储库的引用,它定义了一个LockFile,其中包含许多与文件相同的属性project.assets.json

结果这个类发布在NuGet.ProjectModel包中。事实证明,这个包还包含将该文件转换为对象模型的类。

将文件内容“序列化”到对象模型中的示例代码:

using NuGet.ProjectModel;

class Program
{
    static void Main()
    {
        string content = System.IO.File.ReadAllText("my-folder/project.assets.json");
        var lockFileFormat = new LockFileFormat();
        var lockFile = lockFileFormat.Parse(content, "In Memory");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 为了向后兼容,保留了名称“LockFile”。在project.json中,它曾经被命名为“project.lock.json”。现在它们是不同的文件,所以你有: `LockFile` - project.assets.json `PackagesLockFile` - packages.lock.json,https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet .Core/NuGet.ProjectModel/ProjectLockFile/PackagesLockFile.cs (2认同)