Подтвердить что ты не робот

В чем разница между "зависимостями" и "frameworkAssemblies" в project.json?

Документация для использования project.json для приложений ASP.NET 5 включает пример файла project.json(сокращенная версия ниже).

В чем разница между frameworkAssemblies и dependencies?

И почему dnx451 использует один, а dnxcore50 - другой?

{
  "version": "0.1-alpha-*",
  ...
  "frameworks": {
    "dnx451": {
     "frameworkAssemblies": {
        ...
      }
    },
    "dnxcore50": {
     "dependencies": {
       ...
     }
  }
}

4b9b3361

Ответ 1

frameworkAssemblies относится к сборкам, присутствующим в GAC (глобальный кеш сборки).

Рассмотрим следующий пример:
Я хочу использовать ADO.NET apis (SqlConnection, SqlCommand) для работы с базой данных SQL Server. Я знаю, что эти apis являются частью System.Data.dll и поэтому хотят ссылаться на него. Теперь, когда установлена ​​полная версия .NET Framework, она устанавливает некоторые сборки в GAC (который также имеет этот System.Data.dll), и поэтому вы видите ссылку на frameworkAssemblies в приведенном ниже примере. Придя в CoreClr, мне нужно выяснить, в каком пакете эти типы существуют. Для этого вы можете использовать веб-сайт PackageSearch (построенный членом команды ASP.NET), где вы можете искать тип и находить имя пакета. Исходя из этого, вы найдете System.Data.SqlClient для пакета. Поскольку этот пакет построен для CoreClr, он является частью раздела dependencies в разделе dnxcore50.

{
    "version": "1.0.0-*",
    "description": "Test App",
    "dependencies": {
    },
    "frameworks": {
        "dnx451": {
            "frameworkAssemblies": {
                "System.Data": "4.0.0.0"
            }
        },
        "dnxcore50": {
            "dependencies": {
                "System.Data.SqlClient": "4.0.0-beta-*"
            }
        }
    }
}

Теперь скажем, вы хотите добавить поддержку для json-сериализации и десериализации в своем приложении и хотите ссылаться на пакет Json.Net nuget. Пакет json.Net nuget поддерживает как рабочий стол, так и основной clr, и поэтому вы поместите его в раздел dependencies, общий для обеих фреймворков.

{
    "version": "1.0.0-*",
    "description": "Test App",
    "dependencies": {
        "Newtonsoft.Json": "6.0.6"
    },
    "frameworks": {
        "dnx451": {
            "frameworkAssemblies": {
                "System.Data": "4.0.0.0"
            }
        },
        "dnxcore50": {
            "dependencies": {
                "System.Data.SqlClient": "4.0.0-beta-*"
            }
        }
    }
}