private Dictionary <PackageIdentity, StringBuilder> GetFilteredPackages() { Dictionary <PackageIdentity, StringBuilder> filteredPackages = null; if (TargetManifestFileList != null && TargetManifestFileList.Length > 0) { filteredPackages = new Dictionary <PackageIdentity, StringBuilder>(); foreach (var targetManifestFile in TargetManifestFileList) { Log.LogMessage(MessageImportance.Low, string.Format(CultureInfo.CurrentCulture, Strings.ParsingFiles, targetManifestFile)); var packagesSpecified = StoreArtifactParser.Parse(targetManifestFile); var targetManifestFileName = Path.GetFileName(targetManifestFile); foreach (var pkg in packagesSpecified) { Log.LogMessage(MessageImportance.Low, string.Format(CultureInfo.CurrentCulture, Strings.PackageInfoLog, pkg.Id, pkg.Version)); StringBuilder fileList; if (filteredPackages.TryGetValue(pkg, out fileList)) { fileList.Append($";{targetManifestFileName}"); } else { filteredPackages.Add(pkg, new StringBuilder(targetManifestFileName)); } } } } return(filteredPackages); }
protected override void ExecuteCore() { var lockFileCache = new LockFileCache(BuildEngine4); LockFile lockFile = lockFileCache.GetLockFile(AssetsFilePath); IEnumerable <string> excludeFromPublishPackageIds = PackageReferenceConverter.GetPackageIds(ExcludeFromPublishPackageReferences); IPackageResolver packageResolver = NuGetPackageResolver.CreateResolver(lockFile, ProjectPath); HashSet <PackageIdentity> packagestoBeFiltered = null; if (TargetManifestFiles != null && TargetManifestFiles.Length > 0) { packagestoBeFiltered = new HashSet <PackageIdentity>(); foreach (var manifestFile in TargetManifestFiles) { Log.LogMessage(MessageImportance.Low, string.Format(CultureInfo.CurrentCulture, Strings.ParsingFiles, manifestFile)); var packagesSpecified = StoreArtifactParser.Parse(manifestFile); foreach (var pkg in packagesSpecified) { Log.LogMessage(MessageImportance.Low, string.Format(CultureInfo.CurrentCulture, Strings.PackageInfoLog, pkg.Id, pkg.Version)); } packagestoBeFiltered.UnionWith(packagesSpecified); } } ProjectContext projectContext = lockFile.CreateProjectContext( NuGetUtils.ParseFrameworkName(TargetFramework), RuntimeIdentifier, PlatformLibraryName, IsSelfContained); projectContext.PackagesToBeFiltered = packagestoBeFiltered; var assemblyResolver = new PublishAssembliesResolver(packageResolver) .WithExcludeFromPublish(excludeFromPublishPackageIds) .WithPreserveStoreLayout(PreserveStoreLayout); IEnumerable <ResolvedFile> resolvedAssemblies = assemblyResolver.Resolve(projectContext); foreach (ResolvedFile resolvedAssembly in resolvedAssemblies) { TaskItem item = new TaskItem(resolvedAssembly.SourcePath); item.SetMetadata("DestinationSubPath", resolvedAssembly.DestinationSubPath); item.SetMetadata("AssetType", resolvedAssembly.Asset.ToString().ToLower()); _assembliesToPublish.Add(item); } foreach (var resolvedPkg in assemblyResolver.GetResolvedPackages()) { TaskItem item = new TaskItem(resolvedPkg.Id); item.SetMetadata("Version", resolvedPkg.Version.ToString()); _packagesResolved.Add(item); } }
protected override void ExecuteCore() { string[] targetManifestFileList = TargetManifestFiles?.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (targetManifestFileList != null && targetManifestFileList.Length > 0) { var runtimeStorePackages = new Dictionary <PackageIdentity, StringBuilder>(); foreach (var manifestFile in targetManifestFileList) { Log.LogMessage(MessageImportance.Low, string.Format(CultureInfo.CurrentCulture, Strings.ParsingFiles, manifestFile)); var packagesSpecified = StoreArtifactParser.Parse(manifestFile); var targetManifestFileName = Path.GetFileName(manifestFile); foreach (var pkg in packagesSpecified) { Log.LogMessage(MessageImportance.Low, string.Format(CultureInfo.CurrentCulture, Strings.PackageInfoLog, pkg.Id, pkg.Version)); StringBuilder fileList; if (runtimeStorePackages.TryGetValue(pkg, out fileList)) { fileList.Append($";{targetManifestFileName}"); } else { runtimeStorePackages.Add(pkg, new StringBuilder(targetManifestFileName)); } } } var resultPackages = new List <ITaskItem>(); foreach (var storeEntry in runtimeStorePackages) { string packageName = storeEntry.Key.Id; string packageVersion = storeEntry.Key.Version.ToNormalizedString(); TaskItem item = new TaskItem($"{packageName}/{packageVersion}"); item.SetMetadata(MetadataKeys.PackageName, packageName); item.SetMetadata(MetadataKeys.PackageVersion, packageVersion); item.SetMetadata(MetadataKeys.RuntimeStoreManifestNames, storeEntry.Value.ToString()); resultPackages.Add(item); } RuntimeStorePackages = resultPackages.ToArray(); } }