Ответ 1
Прежде всего, я перешлю вам часть документации, которая описывает global.json
.
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-beta5",
"runtime": "clr",
"architecture": "x86"
}
}
version
(и необязательно runtime
и architecture
) важны, потому что ваш компьютер имеет несколько версий dnx.exe
. Вы можете изучить каталог %USERPROFILE%\.dnx\runtimes
, чтобы просмотреть все установленные среды выполнения. Часть "sdk"
global.json
определяет версию dnx.exe
из одной из установленных вами версий.
Важно понимать "projects"
часть global.json
, что она будет отсканирована всех папок sibling на любом уровне под каждым из каталога. Каждый project.json
, который будет найден, будет интерпретироваться как проект решения.
Вы можете, например, загрузить часть ASP.NET и поместить ее в новую подпапку вашей иерархии решений. Например, вы можете загрузить RC1 источник Entity Framework 7 (файл), любой извлечет zip файл в новой папке ef
внутри папки src
вашего проекта. Вы увидите, что через короткое время после повторного открытия решения список вашего проекта будет длиннее и длиннее, и все компоненты Entity Framework 7 будут включены в ваше решение. Таким же образом вы можете извлечь загруженные источники в отдельный каталог C:\aspnet\EF7
и использовать
{
"projects": [ "src", "c:/aspnet/EF7" ],
"sdk": {
"version": "1.0.0-rc1-update1"
}
}
У вас будут те же эффекты. Если позже вы решите удалить отладку источников Entity Framework 7, вы должны просто исключить "c:/aspnet/EF7"
из global.json
, а затем удалить в ранее добавленные проекты Visual Studio путем выбора в Solution View и нажать Del.
Я думаю, что он должен очистить возможности, которые у вас есть в структурах папок.
Еще одним очень важным необязательным файлом, который может существовать в иерархии решений, является файл NuGet.config
. Он определяет канал NuGet, где пакеты будут загружены. Проблема в том, что существует много репозиториев NuGet (см. ответ), которые имеют разные предварительные версии компонентов ASP.NET 5. Если вы используете точные зависимости, например
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
тогда нужно только иметь явную версию в репозитории NuGet. Проблема в том, что иногда используется зависимость, например
"EntityFramework.MicrosoftSqlServer": "7.0.0-*"
чтобы загрузить последнюю версию пакета. Если вы используете неправильный фид NuGet, вы можете получить ранние сборки RC2, которые несовместимы с другими пакетами RC1 (по крайней мере, из-за переименования многих компонентов между бета-версиями). Чтобы ваше решение (все ваши проекты) использовало RC1, вы можете поместить следующий NuGet.config
в папку решения (поверх всех проектов), например, следующий контент
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageRestore>
<clear /> <!-- ensure only the sources defined below are used -->
<add key="automatic" value="False" />
</packageRestore>
<packageSources>
<add key="AspNetVNext" value="https://www.myget.org/F/aspnetmaster/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
<activePackageSource>
<add key="AspNetVNext" value="true" />
<add key="NuGet" value="true" />
</activePackageSource>
</configuration>
Смотрите документацию. Я рекомендую вам открыть командную строку в какой-либо папке проекта и выполнить
dnu feeds list
команды. Он покажет, что все NuGet.config
из текущей и родительских папок и глобального файла %appdata%\NuGet\NuGet.Config
будут объединены. NuGet будет искать пакеты во всех активных репозиториях. Это будет https://api.nuget.org/v3/index.json и https://www.myget.org/F/aspnetmaster/api/v3/index.json в приведенном выше случае.
Возможные конфликты могут быть, если существует несколько NuGet.config
, указывает разные каналы NuGet или разрешает/отключает некоторые каналы. Здесь помогает команда dnu feeds list
. Вы должны всегда сканировать все NuGet.config
файлы в иерархии проектов, чтобы предотвратить/разрешить конфликты. Разрешение многих конфликтов состоит в основном в использовании правильных каналов или использовании явных версий для разрешения пакетов.
Я рекомендую вам прочитать статью, в которой описывается Наследование NuGet Наследование.
Я надеюсь, что вы могли бы решить, какая структура будет лучше для вашей существующей среды. Я бы рекомендовал придерживаться стандартной структуры
solution
src
project
folderWithProjects
и поместить global.json
и NuGet.config
в каталог решений. Место по умолчанию для тестовых проектов: отдельно от основных проектов:
solution
src
project
folderWithProjects
test
testproject1
testproject2
(вы можете изучить структуру Entity Framework 7 на GitHub или MVC6 здесь). Вы можете следить за структурой или выбирать другое местоположение и изменять "projects"
часть global.json
.
ОБНОВЛЕНО:Microsoft сделала много изменений между RC1 и RC2. dnx.exe
не будет использоваться больше в ASP.NET Core. Вместо этого следует использовать dotnet.exe
. Описание новых/измененных global.json
и project.json
еще не полностью задокументировано. Вы можете увидеть предварительную версию документации здесь. Ссылки на старую документацию (под https://docs.asp.net/en/latest/dnx
) теперь разбиты.