2016-09-29 6 views
0

В моем решении у меня есть проект PCL и два других проекта, каждый для разных платформ.Как узнать, нужны ли для проектов платформы также пакет NuGet

Иногда пакет NuGet, используемый в PCL, также требует установки его в проект платформы, иначе все будет происходить сбой во время выполнения.

Когда я устанавливаю пакет NuGet, как это сделать, если требуется также установить его в проекты платформы?

Например, мне непонятно, требуется ли Microsoft.Net.Http также установка в проекте Xamarin Android или нет. Это просто пример.

Или, я не знаю, требует ли SQLite.Net-PCL его также в проектах платформы.

ответ

1

Что вы можете сделать:

  • Прочитайте документацию, предоставленную автором пакета NuGet. Либо с веб-сайта проекта, либо в описании для пакета NuGet.
  • Используйте свою любимую поисковую систему для примеров того, как использовать этот пакет NuGet.
  • Если есть несколько пакетов NuGet, названных в честь платформы, это дает вам представление о том, что пакет PCL NuGet может не работать в конкретном проекте платформы.
  • Посмотрите в пакете NuGet, используя что-то вроде NuGet Package Explorer, доступного в Windows. Если в пакете NuGet есть каталоги lib, специфичные для платформы, а также каталог PCL, то его необходимо будет установить в конкретном проекте платформы.
  • Запустите приложение и посмотрите, работает ли оно.

Взяв пример Microsoft.Net.Http. В документации не сказано явно. Если вы ищете в Интернете, вы можете найти сообщение в блоге или два, в котором упоминается, что вы должны установить его в свой конкретный проект.

Если вы посмотрите внутрь пакета Microsoft.Net.Http NuGet вы можете видеть, что есть несколько Lib каталогов:

Microsoft.Net.Http NuGet Lib directories

Есть платформы конкретные каталоги, такие как MonoAndroid и Xamarin.iOS10 как а также каталоги PCL, такие как portable-net45 + win8. Это предполагает, что вы должны установить его во все ваши проекты.

+0

Спасибо Мэтт. Хотелось бы, чтобы это было проще. Вероятно, авторы пакета NuGet должны быть более понятны в описании. –

+0

Мэтт, я не думаю, что просмотр пакета для каталогов lib - хороший признак. Я не уверен, но я думаю, что иногда авторы просто перекомпилируют код для разных целей, даже если PCL может быть достаточно. –

+0

Я думаю, что просмотр пакета NuGet для каталогов lib дает вам представление о том, какие платформы автор пакетов решил поддержать. Это в основном то, что NuGet пытается посмотреть, можете ли вы использовать пакет NuGet в проекте. Если есть только PCL, то он также неявно поддерживает другие платформы, у которых может не быть явного каталога lib. Как правило, вы не перекомпилируете код для конкретной платформы, если у вас нет специфического для платформы кода. –