Что такое объектная модель для project.assets.json и какую библиотеку мы можем использовать для ее анализа из файла?

#.net-core #nuget

#.net-core #nuget

Вопрос:

И я не говорю о Newtonsoft.Json — мне нужна фактическая объектная модель, адаптированная к project.assets.json

Есть ли библиотека для этого?

Ответ №1:

Покопавшись в репозитории dotnet / sdk, я в конце концов нашел ссылку на NuGet / NuGet .Клиентский репозиторий, который определяет 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");
    }
}
  

Комментарии:

1. Я посмотрел на этот класс, но, поскольку в нем не упоминались активы и только файл блокировки, я предположил, что он не подходит. Должен был попробовать. Я попробую это сейчас.

2. Да, пока все хорошо. Моих знаний о nuget недостаточно, чтобы признать, что файл блокировки и project.assets.json — это одно и то же.

3. Имя LockFile сохранено для обеспечения обратной совместимости. В project.json он имел обыкновение называться project.lock.json . Теперь это разные файлы, поэтому у вас есть: LockFile — project.assets.json PackagesLockFile — packages.lock.json, github.com/NuGet/NuGet . Client/blob/dev/src/NuGet.Core/…