Advertisement
Guest User

Untitled

a guest
Jul 20th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.31 KB | None | 0 0
  1. method OxygeneCompiler.LoadFromFile(aFilename, aConfig, aPlatform: string);
  2. begin
  3.   var Project := new Microsoft.Build.BuildEngine.Project(Microsoft.Build.BuildEngine.Engine.GlobalEngine);
  4.   try
  5.     Project.Load(aFilename);
  6.     if aConfig <> nil then
  7.       Project.SetProperty('Configuration', aConfig);
  8.     if aPlatform <> nil then
  9.       Project.SetProperty('Platform', aPlatform);
  10.  
  11.     for each el: Microsoft.Build.BuildEngine.BuildProperty in Project.EvaluatedProperties do begin
  12.       var lProp :=GetType.GetProperty(el.Name, System.Reflection.BindingFlags.Instance or System.Reflection.BindingFlags.Public);
  13.       if lProp <> nil then begin
  14.         if lProp.PropertyType = typeof(Boolean) then
  15.           lProp.SetValue(self, Boolean.Parse(el.FinalValue), [])
  16.         else
  17.           lProp.SetValue(self, el.FinalValue, []);
  18.       end;
  19.     end;
  20.  
  21.     SourceFiles := (for el: Microsoft.Build.BuildEngine.BuildItem in Project.GetEvaluatedItemsByName('Compile') yield
  22.       (new Microsoft.Build.Utilities.TaskItem(FixFilename(Project, el.FinalItemSpec))) as Microsoft.Build.Framework.ITaskItem).ToArray;
  23.  
  24.  
  25.     var v4 := typeof(Object).Assembly.GetName().Version.Major >= 4;
  26.     for each el: Microsoft.Build.BuildEngine.BuildItem in  Project.GetEvaluatedItemsByName('Reference')  do begin
  27.       var s := el.GetEvaluatedMetadata('HintPath');
  28.       if (s <> nil) and (s.Contains('System.Dynamic')) then
  29.         v4 := true;
  30.     end;
  31.  
  32.  
  33.     Resources := Project.GetEvaluatedItemsByName('EmbeddedResource').Cast<Microsoft.Build.BuildEngine.BuildItem>().Select(method(item: Microsoft.Build.BuildEngine.BuildItem): ITaskItem begin
  34.       var lItem := new Microsoft.Build.Utilities.TaskItem(FixFilename(Project, Item.FinalItemSpec));
  35.       lItem.SetMetadata('Include', item.FinalItemSpec);
  36.       litem.SetMetadata('FullyQualifiedResourceName', item.GetMetadata('FullyQualifiedResourceName'));
  37.       litem.SetMetadata('LogicalName', item.GetMetadata('LogicalName'));
  38.       exit lItem;
  39.     end).ToArray;
  40.    
  41.     References := (for el: Microsoft.Build.BuildEngine.BuildItem in Project.GetEvaluatedItemsByName('Reference') yield
  42.       (new Microsoft.Build.Utilities.TaskItem(FixReference(v4, el.FinalItemSpec))) as Microsoft.Build.Framework.ITaskItem).ToArray;
  43.   finally
  44.     Engine.GlobalEngine.UnloadProject(Project);
  45.   end;
  46. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement