2017-02-22 26 views
1

Например, это произошло со мной, когда я добавил конфигурацию (IConfigurationRoot) в файл Startup.cs, чтобы иметь доступ к файлу appsettings.json, который имеет строку подключения..Net Core: с использованием директивы без добавления пакета?

Так первый раз, когда я пишу IConfigurationRoot, очевидно, помечаются как не признается, поэтому я кладу мыши над ним и расширить визуальные предложения Студии с лампочки, а именно:

  • использованием Microsoft.Extension .Configuration:
  • Microsoft.Extension.Configuration.IConfigurationRoot
  • Сформировать Тип
  • Добавить пакет Microsoft.Extension.Configuration.Abstractions 1.1.0

Так что, если я выбираю «using Microsoft.Extensions.Configuration», в верхней части моего файла добавляется директива using, а VS распознает IConfigurationRoot, все работает нормально. Но проверка ссылок в моем проекте, эта библиотека не была добавлена ​​к нему:

No Reference Added

Так что, если вместо того, выбирая с помощью директивы, я выбираю «Добавить пакет Microsoft.Extensions.Configuration.Abstractions 1.1.0» , Visual Studio также добавляет, используя директиву но дополнительно добавляет новый Артикул:

Reference Added

Я не понимая, почему это происходит, почему добавление с помощью директивы (первое предложение) работает отлично, это потому, ссылка уже содержится в другом либрале ary ?, если да, то почему я должен добавить пакет отдельно ?. Лучше ли добавлять его индивидуально? Что произойдет, если я это сделаю, добавлю ли я ссылку на одну и ту же библиотеку дважды?

Заранее спасибо.

+0

package Microsoft.Extension.Configuration.Abstractions - это зависимость пакета Microsoft.Extension.Configuration.Json. Вы можете проверить в пакете «Microsoft.Extension.Configuration.Json», чтобы увидеть, что пакет «Абстракция» уже включен? Ядро .NET для VS2015 очень незавершено для таких странных вещей, как это происходит :) –

ответ

1

... это потому, что ссылка уже содержится в другой библиотеке?

Да, посмотрите под Microsoft.Extensions.Configuration.FileExtensions или Microsoft.Extensions.Configuration.Json, и в итоге вы попадете в пакет абстракций.

Если да, то почему я должен добавить пакет отдельно?

Не нужно. Инструментальная лампочка может не совсем соответствовать скорости работы всего пакета.

Следует ли добавить его отдельно?

Не совсем, но если вы когда-либо удалили некоторые из этих базовых пакетов, то добавив их отдельно от Nuget, он остался бы.

Что произойдет, если я это сделаю, добавлю ли я ссылку на одну и ту же библиотеку дважды?

Косвенно, да, но нет никакого вреда. Дерево зависимости Dependency сверлит вниз на каждый уровень зависимостей. При запуске расширения этих узлов вы увидите множество «дубликатов».

+0

Спасибо travis.shepherd –