Example #1
0
        private NugetPackageReference[] GetNugetProjectDependencies()
        {
            //This needs to be tidied up.
            //Should we get nuget references from packages.config followed by additional info from csproj, or the other way around?

            //Additional problem - How do I map csproj nuget references to packages.config entries. The Id's dont always align?

            Cauldron.Add($"Getting Nuget references for {Filepath}");
            List <NugetPackageReference> nugetReferences = new List <NugetPackageReference>();
            var references = new Librarian(_nugetReferencePattern, Text)
                             .Get("capturegroup")
                             .Where(token => token.Contains("\\packages\\")); //i.e. ignore any "lib" references. Cant exclued by !contains(lib) as all packages have a lib folder

            foreach (var reference in references)
            {
                var dllName = new Librarian(_nugetDllNameFromNugetReferencePattern, reference)
                              .Get("capturegroup")
                              .Single();

                var nugetId = new Librarian(_nugetIdFromNugetReferencePattern, reference)
                              .Get("capturegroup")
                              .Single()
                              .TrimEnd('.');

                var hintPath = new Librarian(_nugetHintPathPattern, reference)
                               .Get("capturegroup")
                               .Single();

                var include = new Librarian(_nugetIncludeFromNugetReferencePattern, reference)
                              .Get("capturegroup")
                              .Single();

                var pc = PackagesConfig();
                var nr = pc
                         .NugetpackageReferences;
                var packagesConfigEntry = nr
                                          .Single(entry => string.Equals(entry.Id, nugetId, StringComparison.InvariantCultureIgnoreCase));

                var nugetReference = new NugetPackageReference(nugetId, dllName, hintPath, include, packagesConfigEntry);
                nugetReferences.Add(nugetReference);
            }
            return(nugetReferences.ToArray());
        }
Example #2
0
        internal void AddPackageEntry(NugetPackageReference referenceToAdd)
        {
            if (ContainsEntry(referenceToAdd))
            {
                return;
            }

            Cauldron.Add($"Adding Package Entry {referenceToAdd.Id} to {FilePath}");
            var regex = new Regex(_packagesTag);

            Text = regex.Replace(Text, _packagesTag +
                                 Environment.NewLine +
                                 $"<package id=\"{referenceToAdd.Id}\" " +
                                 $"version=\"{referenceToAdd.Version}\" " +
                                 $"targetFramework=\"{referenceToAdd.TargetFramework}\" />");

            File.WriteAllText(FilePath, Text);

            ReformatXml();
        }
Example #3
0
        public void AddNugetReference(NugetPackageReference referenceToAdd)
        {
            if (ContainsNugetProjectReference(referenceToAdd))
            {
                return;
            }

            Cauldron.Add($"Adding nuget Reference to {Filepath}");
            var isCopyLocal = IsHost();
            var regex       = new Regex(_itemGroupTag);

            Text = regex.Replace(Text, _itemGroupTag + Environment.NewLine +
                                 $"<Reference Include=\"{referenceToAdd.Include}\">" + Environment.NewLine +
                                 $"<HintPath>{referenceToAdd.HintPath}</HintPath>" + Environment.NewLine +
                                 $"<Private>{isCopyLocal}</Private>" + Environment.NewLine +
                                 "</Reference>" + Environment.NewLine
                                 , 1);
            WriteFile();
            ReformatXml(Filepath);
            PackagesConfig().AddPackageEntry(referenceToAdd);
            _NuPkgCache = null;
        }
Example #4
0
 private bool ContainsNugetProjectReference(NugetPackageReference nugetReference)
 {
     return(Text.Contains($"<Reference Include=\"{nugetReference.DllName}"));
 }
Example #5
0
 private bool ContainsEntry(NugetPackageReference referenceToAdd)
 {
     return(Text.Contains($"id=\"{referenceToAdd.Id}\""));
 }