Nuspec: могу ли я иметь сборку в качестве зависимости, но проинструктировать визуальную студию НЕ ссылаться на нее? - PullRequest
0 голосов
/ 05 октября 2018

Я разрабатываю набор сборок, которые содержат классы, которые, используя инфраструктуру внедрения зависимостей, должны создаваться только классом "InstanceProvider" - по сути, это мой вход в SimpleInjector GetInstance ().Затем я упаковываю эти сборки в пакет nuget.

Моя цель - обеспечить, чтобы разработчик выполнял

var myDuck = InstanceProvider.GetInstance<IDuck>();

, а не

var myDuck = new Duck();

Для этого я должен избегать ссылки на некоторые сборки, которые содержат конкретные реализации.Мне все еще нужно, чтобы они были там.

Так что пока, у меня есть их как зависимости в моем пакете nuget.Я ищу способ сохранить их там, но когда разработчик использует пакет для своего проекта, некоторые сборки должны , а не иметь прямую ссылку в их проекте Visual Studio.

Это вообще возможно?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Nuspec: могу ли я иметь сборку в качестве зависимости, но дать указание Visual Studio НЕ ссылаться на нее?

Так как вы не хотите, чтобы эти сборки непосредственно упоминались в их проекте Visual Studio, когдаВы используете пакет для ее проекта, только держите их там.Вы можете установить эти сборки в файлах содержимого или файлах инструментов, например:

<file src="\*.dll" target="content\" />

<file src="\*.dll" target="Tools\" />

Проверка Создание файла .nuspec для получения дополнительной информации.

Таким образомэти сборки включены в пакет nuget, но эти сборки не будут напрямую связаны с проектом при использовании пакета nuget.

Надеюсь, это поможет.

0 голосов
/ 06 октября 2018

Общий ответ вы можете, но вам не стоит об этом беспокоиться, пока вам действительно не понадобится разработка системы с поддержкой "плагинов".Это делает отладку более сложной.

Но продолжайте разделять интерфейс и реализацию - это не связано с динамической загрузкой, но поможет вам разделить код по слоям.

Существует множество инструментов DI, например Unity.Техника, которую они используют: вы настраиваете контейнер в XML-файле, который не требует ссылки.Затем контейнер ищет ассембли и загружает их.

...