GenerateGuid.cs 984 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Copyright (c) .NET Foundation. All rights reserved.
  2. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
  3. using System;
  4. using System.Linq;
  5. using Microsoft.Build.Framework;
  6. using Microsoft.Build.Utilities;
  7. namespace RepoTasks
  8. {
  9. public class GenerateGuid : Task
  10. {
  11. [Output]
  12. public string Guid { get; private set; }
  13. [Required]
  14. public string NamespaceGuid { get; set; }
  15. [Required]
  16. public ITaskItem[] Values { get; set; }
  17. public override bool Execute()
  18. {
  19. try
  20. {
  21. var value = string.Join(",", Values.Select(o => o.ItemSpec).ToArray()).ToLowerInvariant();
  22. Guid = Uuid.Create(new Guid(NamespaceGuid), value).ToString();
  23. }
  24. catch (Exception e)
  25. {
  26. Log.LogErrorFromException(e);
  27. }
  28. return !Log.HasLoggedErrors;
  29. }
  30. }
  31. }