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

Xamarin.forms Xamarin将PCL格式转换为.NET标准升级-查看所有NuGet软件包?,xamarin.forms,nuget,.net-standard,.net-standard-2.0,Xamarin.forms,Nuget,.net Standard,.net Standard 2.0,我有一个Xamarin表单应用程序,它是用PCL构建的 安装NuGet软件包时,我会看到所有安装在NuGet Explorer中的软件包 Android项目示例: Xam.Plugin.Geolocator **5.0.0.187-beta** 它可能依赖于以下NUGET: 然而,当我在.NET标准2.0解决方案中安装Xam.Plugin.geologitor时,我在Nuget Package Explorer中看不到像在PCL项目中那样的其他插件 不管怎样,表单应用程序工作得很好。为什么依

我有一个Xamarin表单应用程序,它是用PCL构建的

安装NuGet软件包时,我会看到所有安装在NuGet Explorer中的软件包

Android项目示例:

Xam.Plugin.Geolocator **5.0.0.187-beta**
它可能依赖于以下NUGET:

然而,当我在.NET标准2.0解决方案中安装
Xam.Plugin.geologitor
时,我在Nuget Package Explorer中看不到像在PCL项目中那样的其他插件

不管怎样,表单应用程序工作得很好。为什么依赖项包不再显示?我如何知道我安装的依赖项软件包的版本

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

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

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


对于.NET标准SDK样式的项目,应该有一个Dependencies-NuGet文件夹。SDK样式的项目没有Packages文件夹

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

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

如果您要将.NET标准.Library NuGet包安装到.NET标准项目中,那么Xam.Plugin.geologitor仅将其作为依赖项。默认情况下,.NET标准项目中会引用此NuGet包。当我将其安装到Visual Studio 2017中的.NET标准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项时,您将看到依赖项。

对于.NET标准SDK样式的项目,应该有dependencies-NuGet文件夹。SDK样式的项目没有Packages文件夹

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

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

如果您要将.NET标准.Library NuGet包安装到.NET标准项目中,那么Xam.Plugin.geologitor仅将其作为依赖项。默认情况下,.NET标准项目中会引用此NuGet包。当我将其安装到Visual Studio 2017中的.NET标准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软件包,如say AutoMapper,则在解决方案资源管理器中展开dependencies-NuGet-AutoMapper项时,您将看到依赖项。

您好,谢谢您的回复。请参阅我的最新答案。在PCL时代,我会将这4个依赖项视为NuGet,并在“管理NuGet Packages for Solution”窗口中显示它们的版本。@aherrick-它对Android项目具有Google Play服务依赖项,而不是PCL项目。如果您解压缩.nupkg,您可以看到Xam.Plugin.geologicaternuget包的结构。我怀疑NuGet只是获得了所有依赖项的许可证批准,以防它们被使用。对,但问题是我如何知道安装的是什么版本?以前,这些GooglePlay服务依赖项可以在我的NuGet包视图中看到,该视图显示了版本。如果需要,它们也可以独立升级。希望我说的有道理。请参见上面的“我的编辑”和屏幕截图。如果选择一个并打开“属性”窗口,您应该能够看到依赖项的版本。此外,如果依赖项不是项目中的PackageReference,则不能直接升级它们。您可以更新项目中直接用作PackageReference的依赖项,这些依赖项可能会更新,也可能不会更新任何子依赖项。与使用packages.config时不同,.NET标准项目不会将所有依赖项的PackageReference添加到项目中,而只添加您安装的那些依赖项。在我看来,问题在于如果有多个NUGET引用相同的DLL会怎么样?您想确保升级所有依赖项吗?您好,谢谢您的回复。请参阅我的最新答案。在PCL时代,我会将这4个依赖项视为NuGet,并在“管理NuGet Packages for Solution”窗口中显示它们的版本。@aherrick-它对Android项目具有Google Play服务依赖项,而不是PCL项目。如果您解压缩.nupkg,您可以看到Xam.Plugin.geologicaternuget包的结构。我怀疑NuGet只是获得了所有依赖项的许可证批准,以防它们被使用。对,但问题是我如何知道安装的是什么版本?以前,这些GooglePlay服务依赖项可以在我的NuGet包视图中看到,该视图显示了版本。如果需要,它们也可以独立升级。希望我说的有道理。请参见上面的“我的编辑”和屏幕截图。如果选择一个并打开“属性”窗口,您应该能够看到依赖项的版本。此外,如果依赖项不是项目中的PackageReference,则不能直接升级它们。您可以更新项目中直接用作PackageReference的依赖项,这些依赖项可能会更新,也可能不会更新任何子依赖项。与使用packages.config时不同,.NET标准项目不会将所有依赖项的PackageReference添加到项目中,而只添加安装的那些依赖项。在我看来,问题在于如果有多个NUGET引用