mrward / monodevelop-nuget-addin

NuGet addin for MonoDevelop and Xamarin Studio
MIT License
264 stars 38 forks source link

NuGet package group target framework information being ignored when installing package #42

Closed mrward closed 10 years ago

mrward commented 10 years ago

A NuGet package can specify a dependency on another NuGet package when a particular target framework is being installed:

<dependencies>
   <group targetFramework="net40">
      <dependency id="MyDependency" version="1.0"/>
   </group>
</dependencies>

Now when installing into a project that does not target net40 then this dependency should not be resolved or used. However the addin does try to resolve this and will fail if it cannot find this dependency.

------- Managing...Test 1.0 -------
Attempting to resolve dependency 'MyDependency (= 1.0)'.
Unable to resolve dependency 'MyDependency (= 1.0)'.
System.InvalidOperationException: Unable to resolve dependency 'MyDependency (= 1.0)'.
  at NuGet.InstallWalker.OnDependencyResolveError (NuGet.PackageDependency dependency) [0x00000] in <filename unknown>:0 
  at NuGet.PackageWalker.Walk (IPackage package) [0x00000] in <filename unknown>:0 
  at NuGet.InstallWalker.ResolveOperations (IPackage package) [0x00000] in <filename unknown>:0 
  at ICSharpCode.PackageManagement.SharpDevelopPackageManager.GetInstallPackageOperations (IPackage package, ICSharpCode.PackageManagement.InstallPackageAction installAction) [0x00000] in <filename unknown>:0 
  at ICSharpCode.PackageManagement.PackageManagementProject.GetInstallPackageOperations (IPackage package, ICSharpCode.PackageManagement.InstallPackageAction installAction) [0x00000] in <filename unknown>:0 
  at ICSharpCode.PackageManagement.PackageViewModel.GetPackagesRequiringLicenseAcceptance (IPackageManagementSelectedProject selectedProject) [0x00000] in <filename unknown>:0 
  at ICSharpCode.PackageManagement.PackageViewModel.CanInstallPackage (IPackageManagementSelectedProject selectedProject) [0x00000] in <filename unknown>:0 
  at ICSharpCode.PackageManagement.PackageViewModel.CanInstallPackage (IList`1 projects) [0x00000] in <filename unknown>:0 
  at ICSharpCode.PackageManagement.PackageViewModel.InstallPackagesForSelectedProjects (IList`1 projects) [0x00000] in <filename unknown>:0 
  at ICSharpCode.PackageManagement.PackageViewModel.TryInstallingPackagesForSelectedProjects (IList`1 projects) [0x00000] in <filename unknown>:0 
==============================

I suspect it is because the project target framework is not being passed to the InstallWalker which would allow it to ignore the dependency based on the project's target framework.