Exemple #1
0
        public override bool Execute()
        {
            NuGetVersion version;

            if (!NuGetVersion.TryParse(PackageVersion, out version))
            {
                throw new ArgumentException(string.Format(
                                                CultureInfo.CurrentCulture,
                                                Strings.InvalidPackageVersion,
                                                PackageVersion));
            }

            var symbolPackageFormat = PackArgs.GetSymbolPackageFormat(MSBuildStringUtility.TrimAndGetNullForEmpty(SymbolPackageFormat));
            var nupkgFileName       = PackCommandRunner.GetOutputFileName(PackageId, version, isNupkg: true, symbols: false, symbolPackageFormat: symbolPackageFormat);
            var nuspecFileName      = PackCommandRunner.GetOutputFileName(PackageId, version, isNupkg: false, symbols: false, symbolPackageFormat: symbolPackageFormat);

            var outputs = new List <ITaskItem>();

            outputs.Add(new TaskItem(Path.Combine(PackageOutputPath, nupkgFileName)));
            outputs.Add(new TaskItem(Path.Combine(NuspecOutputPath, nuspecFileName)));

            if (IncludeSource || IncludeSymbols)
            {
                var nupkgSymbolsFileName  = PackCommandRunner.GetOutputFileName(PackageId, version, isNupkg: true, symbols: true, symbolPackageFormat: symbolPackageFormat);
                var nuspecSymbolsFileName = PackCommandRunner.GetOutputFileName(PackageId, version, isNupkg: false, symbols: true, symbolPackageFormat: symbolPackageFormat);

                outputs.Add(new TaskItem(Path.Combine(PackageOutputPath, nupkgSymbolsFileName)));
                outputs.Add(new TaskItem(Path.Combine(NuspecOutputPath, nuspecSymbolsFileName)));
            }

            OutputPackItems = outputs.ToArray();
            return(true);
        }
 private static void AddCondition(string condition, XElement subItem)
 {
     if (MSBuildStringUtility.TrimAndGetNullForEmpty(condition) != null)
     {
         subItem.Add(new XAttribute(XName.Get("Condition"), condition));
     }
 }
Exemple #3
0
 /// <summary>
 /// This method does two important things:
 /// 1. Normalizes string parameters, trimming whitespace and coalescing empty strings to null.
 /// 2. Wrap <see cref="ITaskItem"/> instances to facility unit testing.
 /// </summary>
 private IPackTaskRequest <IMSBuildItem> GetRequest()
 {
     return(new PackTaskRequest
     {
         AllowedOutputExtensionsInPackageBuildOutputFolder = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(AllowedOutputExtensionsInPackageBuildOutputFolder),
         AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder),
         AssemblyName = MSBuildStringUtility.TrimAndGetNullForEmpty(AssemblyName),
         Authors = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(Authors),
         BuildOutputInPackage = MSBuildUtility.WrapMSBuildItem(BuildOutputInPackage),
         BuildOutputFolder = MSBuildStringUtility.TrimAndGetNullForEmpty(BuildOutputFolder),
         ContinuePackingAfterGeneratingNuspec = ContinuePackingAfterGeneratingNuspec,
         ContentTargetFolders = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(ContentTargetFolders),
         Copyright = MSBuildStringUtility.TrimAndGetNullForEmpty(Copyright),
         Description = MSBuildStringUtility.TrimAndGetNullForEmpty(Description),
         DevelopmentDependency = DevelopmentDependency,
         FrameworkAssemblyReferences = MSBuildUtility.WrapMSBuildItem(FrameworkAssemblyReferences),
         FrameworksWithSuppressedDependencies = MSBuildUtility.WrapMSBuildItem(FrameworksWithSuppressedDependencies),
         IconUrl = MSBuildStringUtility.TrimAndGetNullForEmpty(IconUrl),
         IncludeBuildOutput = IncludeBuildOutput,
         IncludeSource = IncludeSource,
         IncludeSymbols = IncludeSymbols,
         InstallPackageToOutputPath = InstallPackageToOutputPath,
         IsTool = IsTool,
         LicenseUrl = MSBuildStringUtility.TrimAndGetNullForEmpty(LicenseUrl),
         Logger = Logger,
         MinClientVersion = MSBuildStringUtility.TrimAndGetNullForEmpty(MinClientVersion),
         NoDefaultExcludes = NoDefaultExcludes,
         NoPackageAnalysis = NoPackageAnalysis,
         NuspecBasePath = MSBuildStringUtility.TrimAndGetNullForEmpty(NuspecBasePath),
         NuspecFile = MSBuildStringUtility.TrimAndGetNullForEmpty(NuspecFile),
         NuspecOutputPath = MSBuildStringUtility.TrimAndGetNullForEmpty(NuspecOutputPath),
         NuspecProperties = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(NuspecProperties),
         OutputFileNamesWithoutVersion = OutputFileNamesWithoutVersion,
         PackageFiles = MSBuildUtility.WrapMSBuildItem(PackageFiles),
         PackageFilesToExclude = MSBuildUtility.WrapMSBuildItem(PackageFilesToExclude),
         PackageId = MSBuildStringUtility.TrimAndGetNullForEmpty(PackageId),
         PackageOutputPath = MSBuildStringUtility.TrimAndGetNullForEmpty(PackageOutputPath),
         PackageTypes = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(PackageTypes),
         PackageVersion = MSBuildStringUtility.TrimAndGetNullForEmpty(PackageVersion),
         PackItem = MSBuildUtility.WrapMSBuildItem(PackItem),
         ProjectReferencesWithVersions = MSBuildUtility.WrapMSBuildItem(ProjectReferencesWithVersions),
         ProjectUrl = MSBuildStringUtility.TrimAndGetNullForEmpty(ProjectUrl),
         ReleaseNotes = MSBuildStringUtility.TrimAndGetNullForEmpty(ReleaseNotes),
         RepositoryType = MSBuildStringUtility.TrimAndGetNullForEmpty(RepositoryType),
         RepositoryUrl = MSBuildStringUtility.TrimAndGetNullForEmpty(RepositoryUrl),
         RepositoryBranch = MSBuildStringUtility.TrimAndGetNullForEmpty(RepositoryBranch),
         RepositoryCommit = MSBuildStringUtility.TrimAndGetNullForEmpty(RepositoryCommit),
         RequireLicenseAcceptance = RequireLicenseAcceptance,
         RestoreOutputPath = MSBuildStringUtility.TrimAndGetNullForEmpty(RestoreOutputPath),
         Serviceable = Serviceable,
         SourceFiles = MSBuildUtility.WrapMSBuildItem(SourceFiles),
         Tags = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(Tags),
         TargetFrameworks = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(TargetFrameworks),
         TargetPathsToSymbols = MSBuildUtility.WrapMSBuildItem(TargetPathsToSymbols),
         Title = MSBuildStringUtility.TrimAndGetNullForEmpty(Title),
         TreatWarningsAsErrors = MSBuildStringUtility.TrimAndGetNullForEmpty(TreatWarningsAsErrors),
         NoWarn = MSBuildStringUtility.TrimAndGetNullForEmpty(NoWarn),
         WarningsAsErrors = MSBuildStringUtility.TrimAndGetNullForEmpty(WarningsAsErrors)
     });
 }
Exemple #4
0
        private static string GetPropertyValueOrNull(
            IVsProjectProperties properties, string propertyName)
        {
            try
            {
                return(MSBuildStringUtility.TrimAndGetNullForEmpty(properties?.Item(propertyName)?.Value));
            }
            catch (ArgumentException)
            {
            }
            catch (KeyNotFoundException)
            {
            }

            return(null);
        }
Exemple #5
0
        internal static string GetPropertyValueOrNull(
            IVsReferenceItem item, string propertyName)
        {
            try
            {
                return(MSBuildStringUtility.TrimAndGetNullForEmpty(item.Properties?.Item(propertyName)?.Value));
            }
            catch (ArgumentException)
            {
            }
            catch (KeyNotFoundException)
            {
            }

            return(null);
        }
Exemple #6
0
 /// <summary>
 /// This method does two important things:
 /// 1. Normalizes string parameters, trimming whitespace and coalescing empty strings to null.
 /// 2. Wrap <see cref="ITaskItem"/> instances to facility unit testing.
 /// </summary>
 private IPackTaskRequest <IMSBuildItem> GetRequest()
 {
     return(new PackTaskRequest
     {
         AssemblyName = MSBuildStringUtility.TrimAndGetNullForEmpty(AssemblyName),
         AssemblyReferences = MSBuildUtility.WrapMSBuildItem(AssemblyReferences),
         Authors = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(Authors),
         BuildOutputFolder = MSBuildStringUtility.TrimAndGetNullForEmpty(BuildOutputFolder),
         ContinuePackingAfterGeneratingNuspec = ContinuePackingAfterGeneratingNuspec,
         ContentTargetFolders = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(ContentTargetFolders),
         Copyright = MSBuildStringUtility.TrimAndGetNullForEmpty(Copyright),
         Description = MSBuildStringUtility.TrimAndGetNullForEmpty(Description),
         IconUrl = MSBuildStringUtility.TrimAndGetNullForEmpty(IconUrl),
         IncludeBuildOutput = IncludeBuildOutput,
         IncludeSource = IncludeSource,
         IncludeSymbols = IncludeSymbols,
         IsTool = IsTool,
         LicenseUrl = MSBuildStringUtility.TrimAndGetNullForEmpty(LicenseUrl),
         Logger = Logger,
         MinClientVersion = MSBuildStringUtility.TrimAndGetNullForEmpty(MinClientVersion),
         NoPackageAnalysis = NoPackageAnalysis,
         NuspecBasePath = MSBuildStringUtility.TrimAndGetNullForEmpty(NuspecBasePath),
         NuspecFile = MSBuildStringUtility.TrimAndGetNullForEmpty(NuspecFile),
         NuspecOutputPath = MSBuildStringUtility.TrimAndGetNullForEmpty(NuspecOutputPath),
         NuspecProperties = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(NuspecProperties),
         PackageFiles = MSBuildUtility.WrapMSBuildItem(PackageFiles),
         PackageFilesToExclude = MSBuildUtility.WrapMSBuildItem(PackageFilesToExclude),
         PackageId = MSBuildStringUtility.TrimAndGetNullForEmpty(PackageId),
         PackageOutputPath = MSBuildStringUtility.TrimAndGetNullForEmpty(PackageOutputPath),
         PackageTypes = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(PackageTypes),
         PackageVersion = MSBuildStringUtility.TrimAndGetNullForEmpty(PackageVersion),
         PackItem = MSBuildUtility.WrapMSBuildItem(PackItem),
         ProjectUrl = MSBuildStringUtility.TrimAndGetNullForEmpty(ProjectUrl),
         ReleaseNotes = MSBuildStringUtility.TrimAndGetNullForEmpty(ReleaseNotes),
         RepositoryType = MSBuildStringUtility.TrimAndGetNullForEmpty(RepositoryType),
         RepositoryUrl = MSBuildStringUtility.TrimAndGetNullForEmpty(RepositoryUrl),
         RequireLicenseAcceptance = RequireLicenseAcceptance,
         RestoreOutputPath = MSBuildStringUtility.TrimAndGetNullForEmpty(RestoreOutputPath),
         Serviceable = Serviceable,
         SourceFiles = MSBuildUtility.WrapMSBuildItem(SourceFiles),
         Tags = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(Tags),
         TargetFrameworks = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(TargetFrameworks),
         TargetPathsToAssemblies = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(TargetPathsToAssemblies),
         TargetPathsToSymbols = MSBuildStringUtility.TrimAndExcludeNullOrEmpty(TargetPathsToSymbols),
         Title = MSBuildStringUtility.TrimAndGetNullForEmpty(Title),
     });
 }
Exemple #7
0
        private async Task <bool> ExecuteAsync(Common.ILogger log)
        {
            if (RestoreGraphItems.Length < 1)
            {
                log.LogWarning(Strings.NoProjectsProvidedToTask);
                return(true);
            }

            // Set user agent and connection settings.
            ConfigureProtocol();

            // Convert to the internal wrapper
            var wrappedItems = RestoreGraphItems.Select(MSBuildUtility.WrapMSBuildItem);

            //var graphLines = RestoreGraphItems;
            var providerCache = new RestoreCommandProvidersCache();

            using (var cacheContext = new SourceCacheContext())
            {
                cacheContext.NoCache             = RestoreNoCache;
                cacheContext.IgnoreFailedSources = RestoreIgnoreFailedSources;

                // Pre-loaded request provider containing the graph file
                var providers = new List <IPreLoadedRestoreRequestProvider>();

                var dgFile = MSBuildRestoreUtility.GetDependencySpec(wrappedItems);

                if (dgFile.Restore.Count < 1)
                {
                    // Restore will fail if given no inputs, but here we should skip it and provide a friendly message.
                    log.LogMinimal(Strings.NoProjectsToRestore);
                    return(true);
                }

                // Add all child projects
                if (RestoreRecursive)
                {
                    BuildTasksUtility.AddAllProjectsForRestore(dgFile);
                }

                providers.Add(new DependencyGraphSpecRequestProvider(providerCache, dgFile));

                var defaultSettings = Settings.LoadDefaultSettings(root: null, configFileName: null, machineWideSettings: null);
                var sourceProvider  = new CachingSourceProvider(new PackageSourceProvider(defaultSettings));

                var restoreContext = new RestoreArgs()
                {
                    CacheContext         = cacheContext,
                    LockFileVersion      = LockFileFormat.Version,
                    ConfigFile           = MSBuildStringUtility.TrimAndGetNullForEmpty(RestoreConfigFile),
                    DisableParallel      = RestoreDisableParallel,
                    GlobalPackagesFolder = RestorePackagesPath,
                    Log = log,
                    MachineWideSettings       = new XPlatMachineWideSetting(),
                    PreLoadedRequestProviders = providers,
                    CachingSourceProvider     = sourceProvider,
                    AllowNoOp             = !RestoreForce,
                    HideWarningsAndErrors = HideWarningsAndErrors
                };

                if (!string.IsNullOrEmpty(RestoreSources))
                {
                    var sources = MSBuildStringUtility.Split(RestoreSources);
                    restoreContext.Sources.AddRange(sources);
                }

                if (restoreContext.DisableParallel)
                {
                    HttpSourceResourceProvider.Throttle = SemaphoreSlimThrottle.CreateBinarySemaphore();
                }

                _cts.Token.ThrowIfCancellationRequested();

                var restoreSummaries = await RestoreRunner.RunAsync(restoreContext, _cts.Token);

                // Summary
                RestoreSummary.Log(log, restoreSummaries);

                return(restoreSummaries.All(x => x.Success));
            }
        }
        public static bool HasCondition(XElement element, string condition)
        {
            var elementCondition = MSBuildStringUtility.TrimAndGetNullForEmpty(element.Attribute(XName.Get("Condition"))?.Value);

            return(StringComparer.OrdinalIgnoreCase.Equals(MSBuildStringUtility.TrimAndGetNullForEmpty(condition), elementCondition));
        }