@@ -273,16 +273,19 @@ type DependenciesFile(fileName,options,sources,packages : PackageRequirement lis
273273 let packages = packages |> Seq.toList
274274 let dependencyMap = Map.ofSeq ( packages |> Seq.map ( fun p -> p.Name, p.VersionRequirement))
275275
276+ let isPackageLine name ( l : string ) =
277+ let splitted = l.Split( ' ' ) |> Array.map ( fun s -> s.ToLower())
278+ splitted |> Array.exists ((=) " nuget" ) && splitted |> Array.exists ((=) name)
279+
276280 let tryFindPackageLine ( packageName : PackageName ) =
277281 let name = packageName.ToString() .ToLower()
278282 textRepresentation
279- |> Array.tryFindIndex ( fun ( l : string ) ->
280- let splitted = l.Split( ' ' ) |> Array.map ( fun s -> s.ToLower())
281- splitted |> Array.exists ((=) " nuget" ) && splitted |> Array.exists ((=) name))
283+ |> Array.tryFindIndex ( isPackageLine name)
282284
283285 member __.DirectDependencies = dependencyMap
284286 member __.Packages = packages
285287 member __.HasPackage ( name : PackageName ) = packages |> List.exists ( fun p -> NormalizedPackageName p.Name = NormalizedPackageName name)
288+ member __.GetPackage ( name : PackageName ) = packages |> List.find ( fun p -> NormalizedPackageName p.Name = NormalizedPackageName name)
286289 member __.RemoteFiles = remoteFiles
287290 member __.Options = options
288291 member __.FileName = fileName
@@ -418,18 +421,23 @@ type DependenciesFile(fileName,options,sources,packages : PackageRequirement lis
418421 traceWarnfn " %s doesn't contain package %s . ==> Ignored" fileName name
419422 this
420423
421- member this.UpdatePackageVersion ( packageName , version ) =
424+ member this.UpdatePackageVersion ( packageName , version : string ) =
422425 let ( PackageName name ) = packageName
423426 if this.HasPackage( packageName) then
424- let versionRequirement = DependenciesFileParser.parseVersionRequirement version
427+ let versionRequirement = DependenciesFileParser.parseVersionRequirement ( version.Trim '!' )
428+ let resolverStrategy = DependenciesFileParser.parseResolverStrategy version
429+
425430 tracefn " Updating %s version to %s in %s " name version fileName
426- let packages =
427- this.Packages |> List.map ( fun p ->
428- if NormalizedPackageName p.Name = NormalizedPackageName packageName then
429- { p with VersionRequirement = versionRequirement }
430- else p)
431- DependenciesFile( this.FileName, this.Options, sources, packages, this.RemoteFiles, textRepresentation)
432- else
431+ let newLines =
432+ this.Lines |> Array.map ( fun l ->
433+ let name = packageName.ToString() .ToLower()
434+ if isPackageLine name l then
435+ let p = this.GetPackage packageName
436+ DependenciesFileSerializer.packageString packageName versionRequirement resolverStrategy p.Settings
437+ else l)
438+
439+ DependenciesFile( DependenciesFileParser.parseDependenciesFile this.FileName newLines)
440+ else
433441 traceWarnfn " %s doesn't contain package %s . ==> Ignored" fileName name
434442 this
435443
0 commit comments