static void Process(Options o) { const string packFile = "packages.config"; foreach (var projFile in ProjectModel.FindFiles(o.Project)) { var proj = ProjectModel.LoadFile(projFile); var packPath = Path.Combine(proj.ProjectDirectory, packFile); Packages model; if (File.Exists(packPath)) { model = PackageModel.LoadFile(packPath); } else { model = new Packages(); } var entries = new List <Package>(); foreach (var refi in proj.Entries.Where(e => e.HintPath != null)) { var path = Path.GetFullPath(Path.Combine(proj.ProjectDirectory, refi.HintPath)); var refName = refi.HintPath.Split(new[] { refi.Info.Version.ToString() }, StringSplitOptions.None).First().TrimEnd('.') .Split(Path.DirectorySeparatorChar).Last(); var refVer = refi.Info.Version.ToString(); if (refName?.EndsWith(".dll") ?? false) { refName = refName.Replace(".dll", ""); } var refFrame = proj.TargetFramework.Replace("v4", "net4").Replace(".", ""); entries.Add(new Package { Id = refName, Version = refVer, TargetFramework = refFrame }); } foreach (var entry in entries.OrderBy(e => e.Id)) { var tgt = model.Entries.FirstOrDefault(e => e.Id == entry.Id); if (tgt == null) { model.Entries.Add(entry); continue; } tgt.Id = entry.Id; tgt.TargetFramework = entry.TargetFramework; tgt.Version = entry.Version; } PackageModel.StoreFile(model, packPath); } }
public void ShouldListRefs() { var files = ProjectModel.FindFiles(root); AreEqual(3, files.Length); var file1 = files.First(); var model1 = ProjectModel.LoadFile(file1); AreEqual("'HintPath':'..\\", model1.Entries.First() .ToJson().Substring(1, 15)); var file2 = files.Last(); var model2 = ProjectModel.LoadFile(file2); AreEqual("'HintPath':'..\\", model1.Entries.First() .ToJson().Substring(1, 15)); }