Chris Fodor
Chris Fodor

Reputation: 117

NuGet packages added to my project that are not referenced

When restoring NuGet packages I see that Xamarin.ios.CameraViewController is restored to my package and with it, all its dependencies. But I never referenced Xamarin.ios.CameriaViewController nor it is a dependency of my referenced packages.

My csproj nuget references:

<ItemGroup>
<PackageReference Include="Acr.UserDialogs">
  <Version>7.0.3</Version>
</PackageReference>
<PackageReference Include="CarouselView.FormsPlugin">
  <Version>5.2.0</Version>
</PackageReference>
<PackageReference Include="DLToolkit.Forms.Controls.FlowListView">
  <Version>2.0.11</Version>
</PackageReference>
<PackageReference Include="GMImagePicker.Xamarin">
  <Version>2.3.2</Version>
</PackageReference>
<PackageReference Include="Microsoft.Net.Http">
  <Version>2.2.29</Version>
</PackageReference>
<PackageReference Include="Newtonsoft.Json">
  <Version>12.0.1</Version>
</PackageReference>
<PackageReference Include="Plugin.FacebookClient">
  <Version>1.4.0</Version>
</PackageReference>
<PackageReference Include="Plugin.FileUploader">
  <Version>1.4.0</Version>
</PackageReference>
<PackageReference Include="Plugin.GoogleClient">
  <Version>1.1.0</Version>
</PackageReference>
<PackageReference Include="Remote.Linq.Newtonsoft.Json">
  <Version>5.8.2</Version>
</PackageReference>
<PackageReference Include="Rg.Plugins.Popup">
  <Version>1.1.5.188</Version>
</PackageReference>
<PackageReference Include="SQLite.Net.Async-PCL">
  <Version>3.1.1</Version>
</PackageReference>
<PackageReference Include="SQLite.Net.Core-PCL">
  <Version>3.1.1</Version>
</PackageReference>
<PackageReference Include="Syncfusion.Xamarin.SfAutoComplete">
  <Version>16.4.0.54</Version>
</PackageReference>
<PackageReference Include="Xam.Plugin.Connectivity">
  <Version>3.2.0</Version>
</PackageReference>
<PackageReference Include="Xam.Plugin.Media">
  <Version>4.0.1.5</Version>
</PackageReference>
<PackageReference Include="Xam.Plugins.Forms.ImageCircle">
  <Version>3.0.0.5</Version>
</PackageReference>
<PackageReference Include="Xam.Plugins.Messaging">
  <Version>5.2.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
  <Version>1.0.1</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms" Version="3.4.0.1029999" />
<PackageReference Include="System.Reflection.Emit">
  <Version>4.3.0</Version>
  <ExcludeAssets>all</ExcludeAssets>
</PackageReference>
<PackageReference Include="Xamarin.Forms.ImagePicker">
  <Version>1.0.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Google.iOS.SignIn">
  <Version>4.4.0</Version>
</PackageReference>
<PackageReference Include="Xamd.Plugins.Forms.ImageCarousel">
  <Version>1.0.2</Version>
</PackageReference>
<PackageReference Include="Xfx.Controls">
  <Version>1.1.3</Version>
</PackageReference>
</ItemGroup>

So why is it referenced? how can I remove it?

Upvotes: 1

Views: 350

Answers (2)

karann - MSFT
karann - MSFT

Reputation: 481

  • with package references being maintained in the project file, only top level dependencies are listed there, i.e. packages you have explicitly added.
  • Now, packages can depend on other packages. These package become your transitive dependencies - Packages that you did not add explicitly but now you depend on them implicitly.
  • Most times you don't care too much about them which is why they don't show up in the list of installed packages i.e. top level dependencie.
  • You can however, take a look at all your dependencies inclusing transitive ones - open the obj directory for your project. You'll see projects.assetes.json You'll see something like

    "Microsoft.NETCore.UniversalWindowsPlatform/6.2.8": {
     "type": "package",
     "dependencies": {
       "Microsoft.NETCore.Platforms": "2.1.0",
       "Microsoft.Net.Native.Compiler": "2.2.3",
       "Microsoft.Net.UWPCoreRuntimeSdk": "2.2.8",
       "NETStandard.Library": "2.0.3"
    }
    

In that example, Microsoft.NETCore.UniversalWindowsPlatform is a package that you installed explicitly and would see in your csproj references but it also brings in a bunch of its own dependecies i.e. Microsoft.NETCore.Platforms, Microsoft.Net.Native.Compiler, etc.

Upvotes: 1

Jason
Jason

Reputation: 89082

It's a dependency of Xamarin.Forms.ImagePicker.iOS, which is a dependency of Xamarin.Forms.ImagePicker.

Upvotes: 3

Related Questions