Repository navigation
Group Main was not found when calling Dependencies.Remove for last dependency #1950
Description
Description
Programmatically removing the last NuGet package from a paket.dependencies file, using Dependencies.Remove, throws an 'Group Main was not found' exception.
Paket version: 3.21.4
Repro steps
-
Create a paket.dependencies file containing a single NuGet package:
source https://www.nuget.org/api/v2
nuget NUnit -
Install the NUnit NuGet package using paket install
3, Then programatically remove the NUnit NuGet package using code similar to the following C# code:
Dependencies
.Locate (dependenciesFileName)
.Remove (packageId);
Expected behavior
The NuGet package is removed from the paket.dependencies file without any exception.
Actual behavior
The NuGet package is removed from the paket.dependencies file but an exception is thrown.
Removing NUnit from d:\temp\test\paket.dependencies (group Main)
Dependencies files saved to d:\temp\test\paket.dependencies
Group Main was not found in d:\temp\test\paket.dependencies.
System.Exception: Group Main was not found in d:\temp\test\paket.dependencies.
at <StartupCode$Paket-Core>.$DependenciesFile.GetGroup@160-3.Invoke(String message)
at Paket.UpdateProcess.preferredVersions@116-1.Invoke(Tuple`2 tupledArg)
at Microsoft.FSharp.Collections.MapTreeModule.mapiOpt[a,b,c](FSharpFunc`3 f, MapTree`2 m)
at Microsoft.FSharp.Collections.FSharpMap`2.Map[b](FSharpFunc`2 f)
at Microsoft.FSharp.Collections.MapModule.Map[TKey,T,TResult](FSharpFunc`2 mapping, FSharpMap`2 table)
at Paket.UpdateProcess.selectiveUpdate(Boolean force, FSharpFunc`2 getSha1, FSharpFunc`2 getSortedVersionsF, FSharpFunc`2 getPackageDetailsF, LockFile lockFile, DependenciesFile dependenciesFile, UpdateMode updateMode, SemVerUpdateMode semVerUpdateMode)
at Paket.UpdateProcess.SelectiveUpdate(DependenciesFile dependenciesFile, UpdateMode updateMode, SemVerUpdateMode semVerUpdateMode, Boolean force)
at Paket.RemoveProcess.remove(FSharpFunc`2 removeFromProjects, String dependenciesFileName, GroupName groupName, PackageName package, Boolean force, Boolean installAfter)
at Paket.RemoveProcess.Remove(String dependenciesFileName, FSharpOption`1 groupName, PackageName packageName, Boolean force, Boolean interactive, Boolean installAfter)
at <StartupCode$Paket-Core>.$PublicAPI.Remove@444-9.Invoke(Unit unitVar0)
at Paket.Utils.RunInLockedAccessMode[a](String rootFolder, FSharpFunc`2 action)
at Paket.Dependencies.Remove(FSharpOption`1 groupName, String package, Boolean force, Boolean interactive, Boolean installAfter)
at Paket.Dependencies.Remove(FSharpOption`1 groupName, String package)
Known workarounds
If the paket.dependencies file has two NuGet packages (e.g. NUnit and jQuery) then removing the NUnit package works without any exception being thrown.
Removing NUnit from d:\temp\test\paket.dependencies (group Main)
Dependencies files saved to d:\temp\test\paket.dependencies
Resolving packages for group Main:
- jQuery 3.1.1
Locked version resolution written to d:\temp\test\paket.lock
Garbage collecting NUnit
Activity
mrward commentedon Oct 9, 2016
I get the same behaviour if I try to remove the last NuGet dependency using
paket.exe remove nuget nunitfrom the command line:Refresh UI and files after failing to remove last NuGet package
forki commentedon Oct 29, 2016
Should be fixed in latest version. Can you please retry?
mrward commentedon Oct 29, 2016
I am still seeing the same error with Paket 3.25.2.0
forki commentedon Oct 29, 2016
Shit thought another thing fixed it as well. Will take another look next
week
Am 29.10.2016 14:46 schrieb "Matt Ward" notifications@github.com:
Do not remove main group - fixes #1950