RepositoryProject.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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.IO;
  5. using System.Text;
  6. using Microsoft.Build.Construction;
  7. using Microsoft.Build.Evaluation;
  8. namespace RepoTasks.CodeGen
  9. {
  10. class RepositoryProject
  11. {
  12. private readonly ProjectRootElement _doc;
  13. public RepositoryProject(string repositoryRoot)
  14. {
  15. _doc = ProjectRootElement.Create(NewProjectFileOptions.None);
  16. var import = _doc.CreateImportElement(@"$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props");
  17. var propGroup = _doc.AddPropertyGroup();
  18. if (repositoryRoot[repositoryRoot.Length - 1] != '\\')
  19. {
  20. repositoryRoot += '\\';
  21. }
  22. propGroup.AddProperty("RepositoryRoot", repositoryRoot);
  23. _doc.AddItemGroup();
  24. _doc.PrependChild(import);
  25. _doc.AddImport(@"$(MSBuildToolsPath)\Microsoft.Common.targets");
  26. }
  27. public void AddProjectReference(string path)
  28. {
  29. _doc.AddItem("ProjectReference", path);
  30. }
  31. public void AddProperty(string name, string value)
  32. {
  33. _doc.AddProperty(name, value);
  34. }
  35. public void Save(string filePath)
  36. {
  37. _doc.Save(filePath, Encoding.UTF8);
  38. }
  39. }
  40. }