#.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.jsonPackagesLockFile
— packages.lock.json, github.com/NuGet/NuGet . Client/blob/dev/src/NuGet.Core/…