Completely redefined what ProjectType Tasks and TaskActions are and how they work

This commit is contained in:
Michael Becker 2014-12-04 20:49:51 -08:00
parent 87213d8b8d
commit 6cea2e06b1
5 changed files with 108 additions and 87 deletions

View File

@ -7,50 +7,55 @@
<Title>C++ Application</Title>
</Information>
<Tasks>
<Task ID="{9749807D-CD3F-4EC2-A356-6CA4DB7E4AFC}" TaskTypeID="{EE505E05-F125-4718-BA0A-879C72B5125A}" Title="Compile">
<FileName>$(MinGWPath)\g++.exe</FileName>
<Arguments>
<StringBuilder>
<Literal Value="-o " />
<Quote />
<Variable Name="OutputFileName" />
<Quote />
<ConditionalStatement>
<Conditions>
<Condition VariableName="OutputType" Comparison="EqualTo" Value="GraphicalApplication" />
</Conditions>
<TrueResult>
<Literal Value="-mwindows " />
</TrueResult>
</ConditionalStatement>
<ConditionalStatement>
<Conditions>
<Condition VariableName="IncludeFiles.Length" Comparison="GreaterThan" Value="0" />
</Conditions>
<TrueResult>
<VariableArray Name="IncludeFiles" Prefix="-I" Separator=" " />
</TrueResult>
</ConditionalStatement>
<ConditionalStatement>
<Conditions>
<Condition VariableName="LibraryPaths.Length" Comparison="GreaterThan" Value="0" />
</Conditions>
<TrueResult>
<VariableArray Name="LibraryPaths" Prefix="-L" Separator=" " />
</TrueResult>
</ConditionalStatement>
<ConditionalStatement>
<Conditions>
<Condition VariableName="LibraryReferences.Length" Comparison="GreaterThan" Value="0" />
</Conditions>
<TrueResult>
<VariableArray Name="LibraryReferences" Prefix="-l" Separator=" " />
</TrueResult>
</ConditionalStatement>
<Literal Value=" " />
<VariableArray Name="ProjectFiles" Separator=" " />
</StringBuilder>
</Arguments>
<Task Title="Build">
<TaskActions>
<TaskAction TypeID="{EE505E05-F125-4718-BA0A-879C72B5125A}">
<!-- ExecutableTaskAction -->
<FileName>$(MinGWPath)\g++.exe</FileName>
<Arguments>
<StringBuilder>
<Literal Value="-o " />
<Quote />
<Variable Name="OutputFileName" />
<Quote />
<ConditionalStatement>
<Conditions>
<Condition VariableName="OutputType" Comparison="EqualTo" Value="GraphicalApplication" />
</Conditions>
<TrueResult>
<Literal Value="-mwindows " />
</TrueResult>
</ConditionalStatement>
<ConditionalStatement>
<Conditions>
<Condition VariableName="IncludeFiles.Length" Comparison="GreaterThan" Value="0" />
</Conditions>
<TrueResult>
<VariableArray Name="IncludeFiles" Prefix="-I" Separator=" " />
</TrueResult>
</ConditionalStatement>
<ConditionalStatement>
<Conditions>
<Condition VariableName="LibraryPaths.Length" Comparison="GreaterThan" Value="0" />
</Conditions>
<TrueResult>
<VariableArray Name="LibraryPaths" Prefix="-L" Separator=" " />
</TrueResult>
</ConditionalStatement>
<ConditionalStatement>
<Conditions>
<Condition VariableName="LibraryReferences.Length" Comparison="GreaterThan" Value="0" />
</Conditions>
<TrueResult>
<VariableArray Name="LibraryReferences" Prefix="-l" Separator=" " />
</TrueResult>
</ConditionalStatement>
<Literal Value=" " />
<VariableArray Name="ProjectFiles" Separator=" " />
</StringBuilder>
</Arguments>
</TaskAction>
</TaskActions>
</Task>
</Tasks>
</ProjectType>

View File

@ -7,13 +7,17 @@
<Title>XML Transformation Project</Title>
</Information>
<Tasks>
<Task ID="{42ACEBEB-F1E8-43D7-B58B-AF9BE33E634C}" TaskTypeID="{EE505E05-F125-4718-BA0A-879C72B5125A}" Title="Transform XML with Saxonica">
<FileName>C:\Program Files\Saxonica\bin\saxon.exe</FileName>
<Arguments>
<StringBuilder>
<ProjectFiles Separator=" " />
</StringBuilder>
</Arguments>
<Task Title="Transform">
<TaskActions>
<TaskAction TypeID="{EE505E05-F125-4718-BA0A-879C72B5125A}">
<FileName>C:\Program Files\Saxonica\bin\saxon.exe</FileName>
<Arguments>
<StringBuilder>
<ProjectFiles Separator=" " />
</StringBuilder>
</Arguments>
</TaskAction>
</TaskActions>
</Task>
</Tasks>
</ProjectType>

View File

@ -8,23 +8,28 @@
</Information>
<Tasks>
<!--
TaskTypes are defined in libraries.
{EE505E05-F125-4718-BA0A-879C72B5125A} corresponds to the built-in task type ExecutableTask
When tasks are executed, the TaskType gets the inner XML of the task and processes it to extract parameters.
TaskActionTypes are defined in libraries.
{EE505E05-F125-4718-BA0A-879C72B5125A} corresponds to the built-in task action type ExecutableTaskAction
When Tasks are executed, each TaskAction in TaskActions gets executed.
When TaskActions are executed, the TaskType gets the inner XML of the task and processes it to extract parameters.
Certain tags are expanded by the preprocessor, like StringBuilder which is common to all TaskTypes.
-->
<Task ID="{9749807D-CD3F-4EC2-A356-6CA4DB7E4AFC}" TaskTypeID="{EE505E05-F125-4718-BA0A-879C72B5125A}" Title="Compile">
<FileName>$(ArduinoPath)\avr-gcc.exe</FileName>
<Arguments>
<StringBuilder>
<Literal Value="-o " />
<Quote />
<Variable Name="OutputFileName" />
<Quote />
<Literal Value=" " />
<ProjectFiles Separator=" " />
</StringBuilder>
</Arguments>
<Task Title="Build">
<TaskActions>
<TaskAction TypeID="{EE505E05-F125-4718-BA0A-879C72B5125A}">
<FileName>$(ArduinoPath)\avr-gcc.exe</FileName>
<Arguments>
<StringBuilder>
<Literal Value="-o " />
<Quote />
<Variable Name="OutputFileName" />
<Quote />
<Literal Value=" " />
<ProjectFiles Separator=" " />
</StringBuilder>
</Arguments>
</TaskAction>
</TaskActions>
</Task>
</Tasks>
</ProjectType>

View File

@ -7,18 +7,22 @@
<Title>C# Project</Title>
</Information>
<Tasks>
<Task ID="{9749807D-CD3F-4EC2-A356-6CA4DB7E4AFC}" TaskTypeID="{EE505E05-F125-4718-BA0A-879C72B5125A}" Title="Compile">
<FileName>$(DotNetFrameworkPath)\v$(DotNetVersion)\csc.exe</FileName>
<Arguments>
<StringBuilder>
<Literal Value="/out:" />
<Quote />
<Variable Name="OutputFileName" />
<Quote />
<Literal Value=" " />
<ProjectFiles Separator=" " />
</StringBuilder>
</Arguments>
<Task Title="Build">
<TaskActions>
<TaskAction TypeID="{EE505E05-F125-4718-BA0A-879C72B5125A}" >
<FileName>$(DotNetFrameworkPath)\v$(DotNetVersion)\csc.exe</FileName>
<Arguments>
<StringBuilder>
<Literal Value="/out:" />
<Quote />
<Variable Name="OutputFileName" />
<Quote />
<Literal Value=" " />
<ProjectFiles Separator=" " />
</StringBuilder>
</Arguments>
</TaskAction>
</TaskActions>
</Task>
</Tasks>
</ProjectType>

View File

@ -20,18 +20,21 @@ UniversalEditor Projects:
* "Live folders" - project folders are automatically populated with their physical folder contents when project is loaded
Select folder, set "Live folder" = "True" in Properties panel
Project file BuildActions:
"Compile"
Project file Tasks and TaskActions:
ExecutableTaskAction
- Run the given program with the given parameters
FileSystemTaskAction
- Combine multiple selected files into one
OutputObjectModel = FileSystemObjectModel
User specifies OutputFileName and OutputDataFormat
Support multiple Tasks for a BuildAction, i.e.
<BuildAction Title="Compile">
<Tasks>
<Task ID="..." />
<Task ID="..." />
</Tasks>
</BuildAction>
Support multiple TaskActions for a Task, i.e.
<Task Title="Compile">
<TaskActions>
<TaskAction TypeID="..." />
<TaskAction TypeID="..." />
</TaskActions>
</Task>
If any one of the TaskActions fails, the task is terminated.
Document Tabs:
* Dragging items over document tabs should cause the active tab to switch to the tab being dragged over. As of 2012, Visual Studio does not support this ;)