2015-06-10 1 views
18

documentation for using project.json для приложений ASP.NET 5 включает в себя пример файла project.json (сокращенная версия ниже).В чем разница между «зависимостями» и «frameworkAssemblies» в project.json?

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

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

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

ответ

20

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-*" 
      } 
     } 
    } 
} 
+0

Спасибо за ссылку на пакет поиска, этот сайт блестящий! - http://packagesearch.azurewebsites.net/ – timdougall

Смежные вопросы