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()); }
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(); }
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; }
private bool ContainsNugetProjectReference(NugetPackageReference nugetReference) { return(Text.Contains($"<Reference Include=\"{nugetReference.DllName}")); }
private bool ContainsEntry(NugetPackageReference referenceToAdd) { return(Text.Contains($"id=\"{referenceToAdd.Id}\"")); }