Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- method OxygeneCompiler.LoadFromFile(aFilename, aConfig, aPlatform: string);
- begin
- var Project := new Microsoft.Build.BuildEngine.Project(Microsoft.Build.BuildEngine.Engine.GlobalEngine);
- try
- Project.Load(aFilename);
- if aConfig <> nil then
- Project.SetProperty('Configuration', aConfig);
- if aPlatform <> nil then
- Project.SetProperty('Platform', aPlatform);
- for each el: Microsoft.Build.BuildEngine.BuildProperty in Project.EvaluatedProperties do begin
- var lProp :=GetType.GetProperty(el.Name, System.Reflection.BindingFlags.Instance or System.Reflection.BindingFlags.Public);
- if lProp <> nil then begin
- if lProp.PropertyType = typeof(Boolean) then
- lProp.SetValue(self, Boolean.Parse(el.FinalValue), [])
- else
- lProp.SetValue(self, el.FinalValue, []);
- end;
- end;
- SourceFiles := (for el: Microsoft.Build.BuildEngine.BuildItem in Project.GetEvaluatedItemsByName('Compile') yield
- (new Microsoft.Build.Utilities.TaskItem(FixFilename(Project, el.FinalItemSpec))) as Microsoft.Build.Framework.ITaskItem).ToArray;
- var v4 := typeof(Object).Assembly.GetName().Version.Major >= 4;
- for each el: Microsoft.Build.BuildEngine.BuildItem in Project.GetEvaluatedItemsByName('Reference') do begin
- var s := el.GetEvaluatedMetadata('HintPath');
- if (s <> nil) and (s.Contains('System.Dynamic')) then
- v4 := true;
- end;
- Resources := Project.GetEvaluatedItemsByName('EmbeddedResource').Cast<Microsoft.Build.BuildEngine.BuildItem>().Select(method(item: Microsoft.Build.BuildEngine.BuildItem): ITaskItem begin
- var lItem := new Microsoft.Build.Utilities.TaskItem(FixFilename(Project, Item.FinalItemSpec));
- lItem.SetMetadata('Include', item.FinalItemSpec);
- litem.SetMetadata('FullyQualifiedResourceName', item.GetMetadata('FullyQualifiedResourceName'));
- litem.SetMetadata('LogicalName', item.GetMetadata('LogicalName'));
- exit lItem;
- end).ToArray;
- References := (for el: Microsoft.Build.BuildEngine.BuildItem in Project.GetEvaluatedItemsByName('Reference') yield
- (new Microsoft.Build.Utilities.TaskItem(FixReference(v4, el.FinalItemSpec))) as Microsoft.Build.Framework.ITaskItem).ToArray;
- finally
- Engine.GlobalEngine.UnloadProject(Project);
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement