2016-09-29 65 views
0

在我的解决方案中,我有一个PCL项目和两个其他项目,每个项目都适用于不同的平台。我如何知道平台项目是否也需要NuGet包

有时PCL中使用的NuGet包需要将其安装到平台项目中,否则在运行时会发生崩溃。

当我安装NuGet包时,如果还需要将它安装到平台项目中,该怎么办?

例如,如果Microsoft.Net.Http需要在Xamarin Android项目中安装,我还不清楚。这只是一个例子。

或者,我不知道SQLite.Net-PCL是否也要求将它安装在平台项目上。

回答

1

事情可以做:

  • 阅读由NuGet包作者提供的文档。无论是从项目网站还是NuGet软件包的描述。
  • 使用您最喜爱的搜索引擎,了解如何使用NuGet包的示例。
  • 如果有多个以平台命名的NuGet软件包,那么可以让您了解PCL NuGet软件包可能无法在特定于平台的项目中工作。
  • 使用类似于Windows上提供的NuGet Package Explorer来浏览NuGet包。如果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

Matt,我不认为在lib目录的包里面查找是一个很好的指示。我不确定,但我认为有时作者只是针对不同目标的代码进行重新编译,即使PCL足够。 –

+0

我认为,在lib目录的NuGet包内寻找确实可以让你指出包作者决定支持哪些平台。这基本上是NuGet看看你是否可以在项目中使用NuGet包的。如果只有PCL,那么它也隐含地支持其他可能没有明确lib目录的平台。通常,除非您有平台特定的代码,否则不要重新编译特定平台的代码。 –

相关问题