Xamarin将PCL转换为.NET标准升级 - 查看所有NuGet包?

时间:2018-03-14 19:48:36

标签: xamarin.forms nuget .net-standard .net-standard-2.0

我有一个用PCL构建的Xamarin Forms应用程序。

安装NuGet包时,我会看到NuGet Explorer中安装了所有包。

Android项目示例:

Xam.Plugin.Geolocator **5.0.0.187-beta**

它可能依赖于以下NuGets:

enter image description here

但是,当我在.NET Standard 2.0解决方案中安装Xam.Plugin.Geolocator时,我没有像在PCL项目中那样看到Nuget Package Explorer中的其他插件。

无论如何,Forms App工作得很好。为什么不再出现依赖包呢?我怎么知道我安装的依赖包的版本?

我已经将它们手动安装到.NET Standard项目中,但这感觉不正确...

此外,我注意到我的任何项目中都不再有Packages个文件夹。

在我的PCL解决方案中,我可以看到依赖项。见下文:

enter image description here

1 个答案:

答案 0 :(得分:2)

.NET Standard SDK样式项目应该有一个Dependencies - NuGet文件夹。 SDK样式项目没有Packages文件夹。

您可以展开Dependencies - NuGet文件夹项以查看依赖项。如果没有子节点,则没有依赖关系。

您还可以在还原NuGet包后在obj目录中创建的project.assets.json文件中查看更多详细信息。

如果要将.NET Standard.Library NuGet包安装到.NET Standard项目中,它就只有.NET Standard.Library NuGet包作为依赖项。默认情况下,在.NET Standard项目中将引用此NuGet包。当我在Visual Studio 2017中将其安装到.NET Standard 2.0项目中时,它显示没有依赖项。

从.nuspec文件中获取的完整依赖项是:

<dependencies>
  <group targetFramework=".NETFramework0.0" />
  <group targetFramework="Windows0.0" />
  <group targetFramework="WindowsPhone0.0" />
  <group targetFramework="WindowsPhoneApp0.0" />
  <group targetFramework=".NETStandard1.0">
    <dependency id="NETStandard.Library" version="1.6.1" />
  </group>
  <group targetFramework="MonoAndroid1.0">
    <dependency id="Xamarin.GooglePlayServices.Location" version="60.1142.0" />
    <dependency id="Plugin.Permissions" version="2.2.1" />
  </group>
  <group targetFramework="Xamarin.iOS1.0">
    <dependency id="Plugin.Permissions" version="2.2.1" />
  </group>
  <group targetFramework="Xamarin.Mac2.0" />
  <group targetFramework=".NETPortable0.0-Profile259" />
  <group targetFramework="UAP0.0" />
  <group targetFramework=".NETPlatform5.0" />
  <group targetFramework="Xamarin.TVOS0.0" />
  <group targetFramework="Xamarin.WatchOS0.0" />
</dependencies>

如果您尝试其他NuGet包,例如说AutoMapper,那么当您在解决方案资源管理器中展开Dependencies - NuGet - AutoMapper项时,您将依赖于它。