Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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();
            }
        }