Browse Source

Simplify LanguageBindingDoozer (remove LanguageBindingDescriptor) and update DoozerList/ConditionList.

pull/14/head
Daniel Grunwald 15 years ago
parent
commit
7b8e65a2d3
  1. 243
      data/schemas/AddIn.xsd
  2. 39
      doc/technotes/ConditionList.html
  3. 290
      doc/technotes/DoozerList.html
  4. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  5. 62
      src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDescriptor.cs
  6. 27
      src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDoozer.cs
  7. 20
      src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingService.cs
  8. 24
      src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.csproj
  9. 6
      src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.sln
  10. 31
      src/Tools/BuildAddinDocumentation/MainClass.cs

243
data/schemas/AddIn.xsd

@ -117,23 +117,22 @@ @@ -117,23 +117,22 @@
<xs:element ref="CustomProperty" />
<xs:element ref="CustomTool" />
<xs:element ref="Debugger" />
<xs:element ref="DialogPanel" />
<xs:element ref="Directory" />
<xs:element ref="DisplayBinding" />
<xs:element ref="EditAction" />
<xs:element ref="FileFilter" />
<xs:element ref="Icon" />
<xs:element ref="Include" />
<xs:element ref="ProjectBinding" />
<xs:element ref="LanguageBinding" />
<xs:element ref="MenuItem" />
<xs:element ref="OptionPanel" />
<xs:element ref="Pad" />
<xs:element ref="Parser" />
<xs:element ref="ProjectBinding" />
<xs:element ref="ProjectContentRegistry" />
<xs:element ref="SchemeExtension" />
<xs:element ref="String" />
<xs:element ref="SyntaxMode" />
<xs:element ref="TaskBoundAdditionalLogger" />
<xs:element ref="TaskBoundLoggerFilter" />
<xs:element ref="ToolbarItem" />
</xs:choice>
<xs:attribute name="name" type="xs:string" use="required" />
@ -188,23 +187,22 @@ @@ -188,23 +187,22 @@
<xs:element ref="CustomProperty" />
<xs:element ref="CustomTool" />
<xs:element ref="Debugger" />
<xs:element ref="DialogPanel" />
<xs:element ref="Directory" />
<xs:element ref="DisplayBinding" />
<xs:element ref="EditAction" />
<xs:element ref="FileFilter" />
<xs:element ref="Icon" />
<xs:element ref="Include" />
<xs:element ref="ProjectBinding" />
<xs:element ref="LanguageBinding" />
<xs:element ref="MenuItem" />
<xs:element ref="OptionPanel" />
<xs:element ref="Pad" />
<xs:element ref="Parser" />
<xs:element ref="ProjectBinding" />
<xs:element ref="ProjectContentRegistry" />
<xs:element ref="SchemeExtension" />
<xs:element ref="String" />
<xs:element ref="SyntaxMode" />
<xs:element ref="TaskBoundAdditionalLogger" />
<xs:element ref="TaskBoundLoggerFilter" />
<xs:element ref="ToolbarItem" />
</xs:choice>
<xs:attribute name="action" use="optional">
@ -441,39 +439,6 @@ @@ -441,39 +439,6 @@
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="DialogPanel">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ComplexCondition" />
<xs:element ref="Condition" />
<xs:element ref="DialogPanel" />
<xs:element ref="Include" />
</xs:choice>
<xs:attribute name="class" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the IDialogPanel class. Optional if the page has subpages.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="label" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Caption of the dialog panel.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="DialogPanel" type="DialogPanel">
<xs:annotation>
<xs:documentation>
Creates DefaultDialogPanelDescriptor objects that are used in option dialogs.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="Directory">
<xs:complexContent>
<xs:extension base="AbstractCodon">
@ -545,34 +510,6 @@ @@ -545,34 +510,6 @@
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="EditAction">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:attribute name="keys" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Comma-separated list of keyboard shortcuts that activate the edit action.
E.g. "Control|C,Control|Insert"
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="class" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the IEditAction class.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="EditAction" type="EditAction">
<xs:annotation>
<xs:documentation>
Creates IEditAction objects for the text editor.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="FileFilter">
<xs:complexContent>
<xs:extension base="AbstractCodon">
@ -669,47 +606,6 @@ @@ -669,47 +606,6 @@
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="ProjectBinding">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:attribute name="guid" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Project type GUID of the project used by MsBuild.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="supportedextensions" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Semicolon-separated list of file extensions that are compilable files in the project. (e.g. ".boo")
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="projectfileextension" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
File extension of project files. (e.g. ".booproj")
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="class" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the IProjectBinding class.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="ProjectBinding" type="ProjectBinding">
<xs:annotation>
<xs:documentation>
Creates ProjectBindingDescriptor objects for the project service.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="LanguageBinding">
<xs:complexContent>
<xs:extension base="AbstractCodon">
@ -733,7 +629,7 @@ @@ -733,7 +629,7 @@
<xs:element name="LanguageBinding" type="LanguageBinding">
<xs:annotation>
<xs:documentation>
Creates LanguageBindingDescriptor objects for the language service.
Creates LanguageBindingDescriptor objects for the language binding service.
</xs:documentation>
</xs:annotation>
</xs:element>
@ -793,6 +689,15 @@ @@ -793,6 +689,15 @@
<xs:annotation>
<xs:documentation>
Command class that is run when item is clicked.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="command" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>
A WPF routed command that is executed when item is clicked.
Currently, this property is supported only for WPF Menus.
Only one of the "class" and "command" attributes can be used on a menu entry.
</xs:documentation>
</xs:annotation>
</xs:attribute>
@ -821,6 +726,39 @@ @@ -821,6 +726,39 @@
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="OptionPanel">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ComplexCondition" />
<xs:element ref="Condition" />
<xs:element ref="IOptionPanel" />
<xs:element ref="Include" />
</xs:choice>
<xs:attribute name="class" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the IOptionPanel class. Optional if the page has subpages.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="label" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Caption of the dialog panel.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="OptionPanel" type="OptionPanel">
<xs:annotation>
<xs:documentation>
Creates DefaultOptionPanelDescriptor objects that are used in option dialogs.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="Pad">
<xs:complexContent>
<xs:extension base="AbstractCodon">
@ -863,6 +801,13 @@ @@ -863,6 +801,13 @@
<xs:annotation>
<xs:documentation>
Shortcut that activates the 'Show pad' command (e.g. "Control|Alt|T").
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="defaultPosition" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>
Default position of the pad, as a ICSharpCode.SharpDevelop.DefaultPadPositions enum value (e.g. "Bottom, Hidden").
</xs:documentation>
</xs:annotation>
</xs:attribute>
@ -886,27 +831,61 @@ @@ -886,27 +831,61 @@
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="projectfileextension" use="optional" type="xs:string">
<xs:attribute name="class" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the IParser class.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Parser" type="Parser">
<xs:annotation>
<xs:documentation>
Creates ParserDescriptor objects for the parsing service.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="ProjectBinding">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:attribute name="guid" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Project type GUID of the project used by MSBuild.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="supportedextensions" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Semicolon-separated list of file extensions that are compilable files in the project. (e.g. ".boo")
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="projectfileextension" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
File extension of project files. (e.g. ".booproj")
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="class" use="optional" type="xs:string">
<xs:attribute name="class" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the IParser class.
Name of the IProjectBinding class.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Parser" type="Parser">
<xs:element name="ProjectBinding" type="ProjectBinding">
<xs:annotation>
<xs:documentation>
Creates ParserDescriptor objects for the parsing service.
Creates ProjectBindingDescriptor objects for the project service.
</xs:documentation>
</xs:annotation>
</xs:element>
@ -977,48 +956,42 @@ @@ -977,48 +956,42 @@
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="SyntaxMode">
<xs:complexType name="TaskBoundAdditionalLogger">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:attribute name="name" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the language for which the syntax mode is used.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="extensions" use="required" type="xs:string">
<xs:attribute name="class" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Semicolon-separated list of file extensions for which the syntax mode is used.
Name of the IMSBuildAdditionalLogger class.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="resource" use="required" type="xs:string">
<xs:attribute name="taskname" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Fully qualified name of the resource file.
Specifies the name of the MSBuild task that must be running for
this logger to be active.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="SyntaxMode" type="SyntaxMode">
<xs:element name="TaskBoundAdditionalLogger" type="TaskBoundAdditionalLogger">
<xs:annotation>
<xs:documentation>
Creates AddInTreeSyntaxMode objects that wrap a .xshd syntax mode stored as resource in the
addin assembly.
Creates IMSBuildAdditionalLogger objects that are only
activated when a specific MSBuild task is running.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="TaskBoundAdditionalLogger">
<xs:complexType name="TaskBoundLoggerFilter">
<xs:complexContent>
<xs:extension base="AbstractCodon">
<xs:attribute name="class" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>
Name of the IMSBuildAdditionalLogger class.
Name of the IMSBuildLoggerFilter class.
</xs:documentation>
</xs:annotation>
</xs:attribute>
@ -1033,10 +1006,10 @@ @@ -1033,10 +1006,10 @@
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="TaskBoundAdditionalLogger" type="TaskBoundAdditionalLogger">
<xs:element name="TaskBoundLoggerFilter" type="TaskBoundLoggerFilter">
<xs:annotation>
<xs:documentation>
Creates IMSBuildAdditionalLogger objects that are only
Creates IMSBuildLoggerFilter objects that are only
activated when a specific MSBuild task is running.
</xs:documentation>
</xs:annotation>

39
doc/technotes/ConditionList.html

@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
</head><body>
<h1>Condition List</h1>
<p class="notice">This file was generated by the tool 'BuildAddinDocumentation'.
It is based on SharpDevelop 3.0.0.3062.</p>
It is based on SharpDevelop 4.0.0.7014.</p>
<ul>
<li><a href="#ActiveContentExtension">ActiveContentExtension</a>
<li><a href="#ActiveViewContentUntitled">ActiveViewContentUntitled</a>
@ -26,6 +26,8 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -26,6 +26,8 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<li><a href="#TextContent">TextContent</a>
<li><a href="#WindowActive">WindowActive</a>
<li><a href="#WindowOpen">WindowOpen</a>
<li><a href="#WriteableProject">WriteableProject</a>
<li><a href="#WriteableSolution">WriteableSolution</a>
</ul>
<div>
<h2><a name="ActiveContentExtension">ActiveContentExtension</a></h2>
@ -176,7 +178,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -176,7 +178,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<th colspan=2>comparisonType:</td>
<td>
The mode of the comparison: a field of the System.StringComparison enumeration. The default is
'InvariantCultureIgnoreCase'.
'OrdinalIgnoreCase'.
</td>
</tr>
</table>
@ -213,7 +215,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -213,7 +215,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<th colspan=2>comparisonType:</td>
<td>
The mode of the comparison: a field of the System.StringComparison enumeration. The default is
'InvariantCultureIgnoreCase'.
'OrdinalIgnoreCase'.
</td>
</tr>
</table>
@ -423,7 +425,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -423,7 +425,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<table>
<tr>
<th colspan=2>Condition name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Conditions.TextContentConditionEvaluator</td>
<td>ICSharpCode.SharpDevelop.Editor.AvalonEdit.TextContentConditionEvaluator</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
@ -459,7 +461,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -459,7 +461,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</table>
<p><span class="exampleTitle">Example: Test if the current window is a text editor</span>
<br><pre>
&lt;Condition name="WindowActive" activewindow="ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.ITextEditorControlProvider"&gt;</pre></p>
&lt;Condition name="WindowActive" activewindow="ICSharpCode.SharpDevelop.Editor.ITextEditorProvider"&gt;</pre></p>
<p><span class="exampleTitle">Example: Test if any window is active</span>
<br><pre>
&lt;Condition name="WindowActive" activewindow="*"&gt;</pre></p>
@ -487,9 +489,34 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -487,9 +489,34 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</table>
<p><span class="exampleTitle">Example: Test if a text editor is opened</span>
<br><pre>
&lt;Condition name="WindowOpen" openwindow="ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.ITextEditorControlProvider"&gt;</pre></p>
&lt;Condition name="WindowOpen" openwindow="ICSharpCode.SharpDevelop.Editor.ITextEditorProvider"&gt;</pre></p>
<p><span class="exampleTitle">Example: Test if any window is open</span>
<br><pre>
&lt;Condition name="WindowOpen" openwindow="*"&gt;</pre></p>
</div>
<div>
<h2><a name="WriteableProject">WriteableProject</a></h2>
<p>
Tests if the caller project is writable. If caller is not an IProject it tests
Project.CurrentProject.
</p>
<table>
<tr>
<th colspan=2>Condition name:</td>
<td>ICSharpCode.SharpDevelop.WriteableProjectConditionEvaluator</td>
</tr>
</table>
</div>
<div>
<h2><a name="WriteableSolution">WriteableSolution</a></h2>
<p>
Description of WriteableSolutionEvaluator.
</p>
<table>
<tr>
<th colspan=2>Condition name:</td>
<td>ICSharpCode.SharpDevelop.WriteableSolutionConditionEvaluator</td>
</tr>
</table>
</div>
</body></html>

290
doc/technotes/DoozerList.html

@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
</head><body>
<h1>Doozer List</h1>
<p class="notice">This file was generated by the tool 'BuildAddinDocumentation'.
It is based on SharpDevelop 3.0.0.3062.</p>
It is based on SharpDevelop 4.0.0.7014.</p>
<ul>
<li><a href="#Class">Class</a>
<li><a href="#CodeCompletionBinding">CodeCompletionBinding</a>
<li><a href="#CustomProperty">CustomProperty</a>
<li><a href="#CustomTool">CustomTool</a>
<li><a href="#Debugger">Debugger</a>
<li><a href="#DialogPanel">DialogPanel</a>
<li><a href="#Directory">Directory</a>
<li><a href="#DisplayBinding">DisplayBinding</a>
<li><a href="#EditAction">EditAction</a>
<li><a href="#FileFilter">FileFilter</a>
<li><a href="#Icon">Icon</a>
<li><a href="#Include">Include</a>
<li><a href="#LanguageBinding">LanguageBinding</a>
<li><a href="#MenuItem">MenuItem</a>
<li><a href="#OptionPanel">OptionPanel</a>
<li><a href="#Pad">Pad</a>
<li><a href="#Parser">Parser</a>
<li><a href="#ProjectBinding">ProjectBinding</a>
<li><a href="#ProjectContentRegistry">ProjectContentRegistry</a>
<li><a href="#SchemeExtension">SchemeExtension</a>
<li><a href="#String">String</a>
<li><a href="#SyntaxMode">SyntaxMode</a>
<li><a href="#TaskBoundAdditionalLogger">TaskBoundAdditionalLogger</a>
<li><a href="#TaskBoundLoggerFilter">TaskBoundLoggerFilter</a>
<li><a href="#ToolbarItem">ToolbarItem</a>
</ul>
<div>
@ -70,7 +70,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -70,7 +70,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor.CodeCompletionBindingDoozer</td>
<td>ICSharpCode.SharpDevelop.Editor.CodeCompletion.CodeCompletionBindingDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
@ -275,50 +275,6 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -275,50 +275,6 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</tr>
</table>
</div>
<div>
<h2><a name="DialogPanel">DialogPanel</a></h2>
<p>
Creates DefaultDialogPanelDescriptor objects that are used in option dialogs.
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DialogPanelDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th colspan=2>class:</td>
<td>
Name of the IDialogPanel class. Optional if the page has subpages.
</td>
</tr>
<tr>
<th>label:</td>
<td class="userequired">required</td>
<td>
Caption of the dialog panel.
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Children:</td>
<td>
In the SharpDevelop options, option pages can have subpages by specifying them
as children in the AddInTree.
</td>
</tr>
<tr>
<th colspan=2>Usage:</td>
<td>In /SharpDevelop/BackendBindings/ProjectOptions/ and /SharpDevelop/Dialogs/OptionsDialog</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
A DefaultDialogPanelDescriptor object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="Directory">Directory</a></h2>
<p>
@ -426,45 +382,6 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -426,45 +382,6 @@ It is based on SharpDevelop 3.0.0.3062.</p>
fileNamePattern = "\.(cs|vb)$" /&gt;
&lt;/Path&gt;</pre></p>
</div>
<div>
<h2><a name="EditAction">EditAction</a></h2>
<p>
Creates IEditAction objects for the text editor.
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Codons.EditActionDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>keys:</td>
<td class="userequired">required</td>
<td>
Comma-separated list of keyboard shortcuts that activate the edit action.
E.g. "Control|C,Control|Insert"
</td>
</tr>
<tr>
<th>class:</td>
<td class="userequired">required</td>
<td>
Name of the IEditAction class.
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Usage:</td>
<td>Only in /AddIns/DefaultTextEditor/EditActions</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
An IEditAction object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="FileFilter">FileFilter</a></h2>
<p>
@ -497,8 +414,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -497,8 +414,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
String in the format "name|extensions".
<td>FileFilterDescriptor in the format "name|extensions".
</td>
</tr>
</table>
@ -593,7 +509,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -593,7 +509,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<div>
<h2><a name="LanguageBinding">LanguageBinding</a></h2>
<p>
Creates LanguageBindingDescriptor objects for the project service.
Creates LanguageBindingDescriptor objects for the language binding service.
</p>
<table>
<tr>
@ -602,24 +518,10 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -602,24 +518,10 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>guid:</td>
<td class="userequired">required</td>
<td>
Project type GUID of the project used by MsBuild.
</td>
</tr>
<tr>
<th>supportedextensions:</td>
<td class="userequired">required</td>
<td>
Semicolon-separated list of file extensions that are compilable files in the project. (e.g. ".boo")
</td>
</tr>
<tr>
<th>projectfileextension:</td>
<th>extensions:</td>
<td class="userequired">required</td>
<td>
File extension of project files. (e.g. ".booproj")
Semicolon-separated list of file extensions that are handled by the language binding (e.g. .xaml)
</td>
</tr>
<tr>
@ -637,7 +539,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -637,7 +539,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<tr>
<th colspan=2>Returns:</td>
<td>
An LanguageBindingDescriptor object that wraps the ILanguageBinding object.
The ILanguageBinding object.
</td>
</tr>
</table>
@ -693,6 +595,15 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -693,6 +595,15 @@ It is based on SharpDevelop 3.0.0.3062.</p>
Command class that is run when item is clicked.
</td>
</tr>
<tr>
<th>command:</td>
<td class="userequired">optional</td>
<td>
A WPF routed command that is executed when item is clicked.
Currently, this property is supported only for WPF Menus.
Only one of the "class" and "command" attributes can be used on a menu entry.
</td>
</tr>
<tr>
<th>link:</td>
<td class="userequired">optional</td>
@ -722,7 +633,7 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -722,7 +633,7 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<tr>
<th colspan=2>Returns:</td>
<td>
Any ToolStrip* object, depending on the type attribute.
A MenuItemDescriptor object.
</td>
</tr>
<tr>
@ -731,6 +642,50 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -731,6 +642,50 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</tr>
</table>
</div>
<div>
<h2><a name="OptionPanel">OptionPanel</a></h2>
<p>
Creates DefaultOptionPanelDescriptor objects that are used in option dialogs.
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.OptionPanelDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th colspan=2>class:</td>
<td>
Name of the IOptionPanel class. Optional if the page has subpages.
</td>
</tr>
<tr>
<th>label:</td>
<td class="userequired">required</td>
<td>
Caption of the dialog panel.
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Children:</td>
<td>
In the SharpDevelop options, option pages can have subpages by specifying them
as children in the AddInTree.
</td>
</tr>
<tr>
<th colspan=2>Usage:</td>
<td>In /SharpDevelop/BackendBindings/ProjectOptions/ and /SharpDevelop/Dialogs/OptionsDialog</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
A DefaultOptionPanelDescriptor object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="Pad">Pad</a></h2>
<p>
@ -784,6 +739,13 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -784,6 +739,13 @@ It is based on SharpDevelop 3.0.0.3062.</p>
Shortcut that activates the 'Show pad' command (e.g. "Control|Alt|T").
</td>
</tr>
<tr>
<th>defaultPosition:</td>
<td class="userequired">optional</td>
<td>
Default position of the pad, as a ICSharpCode.SharpDevelop.DefaultPadPositions enum value (e.g. "Bottom, Hidden").
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Usage:</td>
@ -815,26 +777,72 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -815,26 +777,72 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</td>
</tr>
<tr>
<th colspan=2>projectfileextension:</td>
<th colspan=2>class:</td>
<td>
Name of the IParser class.
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Usage:</td>
<td>Only in /Workspace/Parser</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
An ParserDescriptor object that wraps the IParser object.
</td>
</tr>
</table>
</div>
<div>
<h2><a name="ProjectBinding">ProjectBinding</a></h2>
<p>
Creates ProjectBindingDescriptor objects for the project service.
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.ProjectBindingDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>guid:</td>
<td class="userequired">required</td>
<td>
Project type GUID of the project used by MSBuild.
</td>
</tr>
<tr>
<th>supportedextensions:</td>
<td class="userequired">required</td>
<td>
Semicolon-separated list of file extensions that are compilable files in the project. (e.g. ".boo")
</td>
</tr>
<tr>
<th>projectfileextension:</td>
<td class="userequired">required</td>
<td>
File extension of project files. (e.g. ".booproj")
</td>
</tr>
<tr>
<th colspan=2>class:</td>
<th>class:</td>
<td class="userequired">required</td>
<td>
Name of the IParser class.
Name of the IProjectBinding class.
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Usage:</td>
<td>Only in /Workspace/Parser</td>
<td>Only in /SharpDevelop/Workbench/ProjectBinding</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
An ParserDescriptor object that wraps the IParser object.
A ProjectBindingDescriptor object that wraps the IProjectBinding object.
</td>
</tr>
</table>
@ -943,69 +951,69 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -943,69 +951,69 @@ It is based on SharpDevelop 3.0.0.3062.</p>
</table>
</div>
<div>
<h2><a name="SyntaxMode">SyntaxMode</a></h2>
<h2><a name="TaskBoundAdditionalLogger">TaskBoundAdditionalLogger</a></h2>
<p>
Creates AddInTreeSyntaxMode objects that wrap a .xshd syntax mode stored as resource in the
addin assembly.
Creates IMSBuildAdditionalLogger objects that are only
activated when a specific MSBuild task is running.
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.DefaultEditor.Codons.SyntaxModeDoozer</td>
<td>ICSharpCode.SharpDevelop.Project.TaskBoundAdditionalLoggerDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>name:</td>
<td class="userequired">required</td>
<td>
Name of the language for which the syntax mode is used.
</td>
</tr>
<tr>
<th>extensions:</td>
<th>class:</td>
<td class="userequired">required</td>
<td>
Semicolon-separated list of file extensions for which the syntax mode is used.
Name of the IMSBuildAdditionalLogger class.
</td>
</tr>
<tr>
<th>resource:</td>
<th>taskname:</td>
<td class="userequired">required</td>
<td>
Fully qualified name of the resource file.
Specifies the name of the MSBuild task that must be running for
this logger to be active.
</td>
</tr>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Usage:</td>
<td>Only in /SharpDevelop/ViewContent/DefaultTextEditor/SyntaxModes</td>
<td>Only in /SharpDevelop/MSBuildEngine/AdditionalLoggers</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
An AddInTreeSyntaxMode object that loads the resource from the addin assembly when
its CreateTextReader method is called.
A IMSBuildAdditionalLogger object that lazy-loads the specified
IMSBuildAdditionalLogger when the specified task is running.
</td>
</tr>
</table>
<p><span class="exampleTitle">Example: </span>
<br><pre>
&lt;TaskBoundAdditionalLogger
id = "FxCopLogger"
taskname = "FxCop"
class = "ICSharpCode.CodeAnalysis.FxCopLogger"/&gt;</pre></p>
</div>
<div>
<h2><a name="TaskBoundAdditionalLogger">TaskBoundAdditionalLogger</a></h2>
<h2><a name="TaskBoundLoggerFilter">TaskBoundLoggerFilter</a></h2>
<p>
Creates IMSBuildAdditionalLogger objects that are only
Creates IMSBuildLoggerFilter objects that are only
activated when a specific MSBuild task is running.
</p>
<table>
<tr>
<th colspan=2>Doozer name:</td>
<td>ICSharpCode.SharpDevelop.Project.TaskBoundAdditionalLoggerDoozer</td>
<td>ICSharpCode.SharpDevelop.Project.TaskBoundLoggerFilterDoozer</td>
</tr>
<tr><td colspan=3><hr><h3>Attributes:</h3></td></tr>
<tr>
<th>class:</td>
<td class="userequired">required</td>
<td>
Name of the IMSBuildAdditionalLogger class.
Name of the IMSBuildLoggerFilter class.
</td>
</tr>
<tr>
@ -1019,22 +1027,22 @@ It is based on SharpDevelop 3.0.0.3062.</p> @@ -1019,22 +1027,22 @@ It is based on SharpDevelop 3.0.0.3062.</p>
<tr><td colspan=3><hr></td></tr>
<tr>
<th colspan=2>Usage:</td>
<td>Only in /SharpDevelop/MSBuildEngine/AdditionalLoggers</td>
<td>Only in /SharpDevelop/MSBuildEngine/LoggerFilters</td>
</tr>
<tr>
<th colspan=2>Returns:</td>
<td>
A IMSBuildAdditionalLogger object that lazy-loads the specified
IMSBuildAdditionalLogger when the specified task is running.
A IMSBuildLoggerFilter object that lazy-loads the specified
IMSBuildLoggerFilter when the specified task is running.
</td>
</tr>
</table>
<p><span class="exampleTitle">Example: </span>
<br><pre>
&lt;TaskBoundAdditionalLogger
&lt;TaskBoundLoggerFilter
id = "FxCopLogger"
taskname = "FxCop"
class = "ICSharpCode.CodeAnalysis.FxCopLogger"/&gt;</pre></p>
class = "ICSharpCode.CodeAnalysis.FxCopLoggerFilter"/&gt;</pre></p>
</div>
<div>
<h2><a name="ToolbarItem">ToolbarItem</a></h2>

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -324,7 +324,6 @@ @@ -324,7 +324,6 @@
<Compile Include="Src\Services\LanguageBinding\AggregatedLanguageBinding.cs" />
<Compile Include="Src\Services\LanguageBinding\DefaultLanguageBinding.cs" />
<Compile Include="Src\Services\LanguageBinding\ILanguageBinding.cs" />
<Compile Include="Src\Services\LanguageBinding\LanguageBindingDescriptor.cs" />
<Compile Include="Src\Services\LanguageBinding\LanguageBindingDoozer.cs" />
<Compile Include="Src\Services\LanguageBinding\LanguageBindingService.cs" />
<Compile Include="Src\Services\Language\LanguageService.cs" />

62
src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDescriptor.cs

@ -1,62 +0,0 @@ @@ -1,62 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.SharpDevelop
{
public class LanguageBindingDescriptor
{
Codon codon;
string[] extensions;
public LanguageBindingDescriptor(Codon codon)
{
this.codon = codon;
}
internal ILanguageBinding CreateBinding(ITextEditor editor) {
return (ILanguageBinding)codon.AddIn.CreateObject(codon.Properties["class"]);
}
internal bool CanAttach(ITextEditor editor)
{
if (!string.IsNullOrEmpty(editor.FileName)) {
string extension = Path.GetExtension(editor.FileName).ToLowerInvariant();
foreach (var ext in Extensions) {
if (extension == ext)
return true;
}
}
return false;
}
public string Language {
get {
return codon.Id;
}
}
public Codon Codon {
get {
return codon;
}
}
public string[] Extensions {
get {
if (extensions == null) {
if (codon.Properties["extensions"].Length == 0)
extensions = new string[0];
else
extensions = codon.Properties["extensions"].ToLowerInvariant().Split(';');
}
return extensions;
}
}
}
}

27
src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDoozer.cs

@ -2,7 +2,9 @@ @@ -2,7 +2,9 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Editor;
namespace ICSharpCode.SharpDevelop
{
@ -17,7 +19,7 @@ namespace ICSharpCode.SharpDevelop @@ -17,7 +19,7 @@ namespace ICSharpCode.SharpDevelop
/// </attribute>
/// <usage>Only in /SharpDevelop/Workbench/LanguageBindings</usage>
/// <returns>
/// A LanguageBindingDescriptor object that wraps the ILanguageBinding object.
/// The ILanguageBinding object.
/// </returns>
public class LanguageBindingDoozer : IDoozer
{
@ -29,7 +31,28 @@ namespace ICSharpCode.SharpDevelop @@ -29,7 +31,28 @@ namespace ICSharpCode.SharpDevelop
public object BuildItem(object caller, Codon codon, System.Collections.ArrayList subItems)
{
return new LanguageBindingDescriptor(codon);
ITextEditor editor = (ITextEditor)caller;
string[] extensions = codon.Properties["extensions"].Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
if (CanAttach(extensions, editor.FileName)) {
return codon.AddIn.CreateObject(codon.Properties["class"]);
} else {
return null;
}
}
static bool CanAttach(string[] extensions, string fileName)
{
// always attach when no extensions were given
if (extensions.Length == 0)
return true;
if (string.IsNullOrEmpty(fileName))
return false;
string fileExtension = Path.GetExtension(fileName);
foreach (string ext in extensions) {
if (string.Equals(ext, fileExtension, StringComparison.OrdinalIgnoreCase))
return true;
}
return false;
}
}
}

20
src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingService.cs

@ -11,30 +11,14 @@ namespace ICSharpCode.SharpDevelop @@ -11,30 +11,14 @@ namespace ICSharpCode.SharpDevelop
public static class LanguageBindingService
{
const string languageBindingPath = "/SharpDevelop/Workbench/LanguageBindings";
static readonly List<LanguageBindingDescriptor> bindings;
static LanguageBindingService()
{
bindings = AddInTree.BuildItems<LanguageBindingDescriptor>(languageBindingPath, null, false);
}
/// <summary>
/// Creates the binding for the specified text editor. This method never returns null.
/// </summary>
public static ILanguageBinding CreateBinding(ITextEditor editor)
{
return new AggregatedLanguageBinding(FindMatchingBindings(editor));
}
static ILanguageBinding[] FindMatchingBindings(ITextEditor editor)
{
List<ILanguageBinding> matches = new List<ILanguageBinding>();
foreach (var binding in bindings) {
if (binding.CanAttach(editor))
matches.Add(binding.CreateBinding(editor));
}
return matches.ToArray();
var bindings = AddInTree.BuildItems<ILanguageBinding>(languageBindingPath, editor, false);
return new AggregatedLanguageBinding(bindings);
}
}
}

24
src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.csproj

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<OutputType>Exe</OutputType>
<RootNamespace>BuildAddinDocumentation</RootNamespace>
@ -6,12 +7,18 @@ @@ -6,12 +7,18 @@
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{211887B2-E9E4-45A4-BE16-6CEA4A7E00F2}</ProjectGuid>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
<NoStdLib>False</NoStdLib>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<OutputPath>bin\Debug\</OutputPath>
<Optimize>False</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugSymbols>True</DebugSymbols>
<DebugSymbols>true</DebugSymbols>
<DebugType>Full</DebugType>
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
</PropertyGroup>
@ -23,9 +30,22 @@ @@ -23,9 +30,22 @@
<DebugType>None</DebugType>
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<PlatformTarget>x86</PlatformTarget>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="MainClass.cs" />

6
src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.sln

@ -1,5 +1,7 @@ @@ -1,5 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.783

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.0.0.7002
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildAddinDocumentation", "BuildAddinDocumentation.csproj", "{211887B2-E9E4-45A4-BE16-6CEA4A7E00F2}"
EndProject
Global

31
src/Tools/BuildAddinDocumentation/MainClass.cs

@ -24,14 +24,13 @@ namespace BuildAddinDocumentation @@ -24,14 +24,13 @@ namespace BuildAddinDocumentation
List<XmlElement> doozers = new List<XmlElement>();
List<XmlElement> conditions = new List<XmlElement>();
if (!ReadXmlDocu(srcDir + "Main\\Core\\Project", doozers, conditions))
return;
if (!ReadXmlDocu(srcDir + "Main\\Base\\Project", doozers, conditions))
if (!ReadXmlDocu(srcDir + "Main\\Base\\Project\\ICSharpCode.SharpDevelop.csproj", doozers, conditions))
return;
// build normal SharpDevelop:
ProcessStartInfo info = new ProcessStartInfo("cmd", "/c debugbuild.bat");
info.WorkingDirectory = srcDir;
info.WorkingDirectory = Path.GetFullPath(Path.Combine(srcDir, ".."));
Debug.WriteLine(info.WorkingDirectory + ">" + info.FileName + " " + info.Arguments);
Process p = Process.Start(info);
if (!p.WaitForExit(60000)) {
Debug.WriteLine("msbuild did not exit");
@ -44,7 +43,10 @@ namespace BuildAddinDocumentation @@ -44,7 +43,10 @@ namespace BuildAddinDocumentation
sdVersion = FileVersionInfo.GetVersionInfo(Path.GetFullPath(Path.Combine(srcDir, "..\\bin\\SharpDevelop.exe")));
//sdVersion = FileVersionInfo.GetVersionInfo(Path.GetFullPath(Path.Combine(srcDir, "..\\bin\\ICSharpCode.Core.dll")));
XmlDocument coreDoc = new XmlDocument();
coreDoc.Load(srcDir + "..\\bin\\ICSharpCode.Core.xml");
ReadXmlDocu(coreDoc, doozers, conditions);
Comparison<XmlElement> comparison = delegate(XmlElement a, XmlElement b) {
string shortNameA = a.GetAttribute("name").Substring(a.GetAttribute("name").LastIndexOf('.') + 1);
string shortNameB = b.GetAttribute("name").Substring(b.GetAttribute("name").LastIndexOf('.') + 1);
@ -314,9 +316,14 @@ namespace BuildAddinDocumentation @@ -314,9 +316,14 @@ namespace BuildAddinDocumentation
html.WriteLine("</body></html>");
}
static bool ReadXmlDocu(string projectFolder, List<XmlElement> doozers, List<XmlElement> conditions)
static bool ReadXmlDocu(string projectFileName, List<XmlElement> doozers, List<XmlElement> conditions)
{
XmlDocument doc = GetXmlDocu(Path.GetFullPath(projectFileName));
return ReadXmlDocu(doc, doozers, conditions);
}
static bool ReadXmlDocu(XmlDocument doc, List<XmlElement> doozers, List<XmlElement> conditions)
{
XmlDocument doc = GetXmlDocu(Path.GetFullPath(projectFolder));
if (doc == null) return false;
foreach (XmlNode node in doc.DocumentElement["members"]) {
XmlElement member = node as XmlElement;
@ -332,16 +339,16 @@ namespace BuildAddinDocumentation @@ -332,16 +339,16 @@ namespace BuildAddinDocumentation
return true;
}
static XmlDocument GetXmlDocu(string projectFolder)
static XmlDocument GetXmlDocu(string projectFileName)
{
string docFile = Path.GetFullPath("doc.xml");
if (File.Exists(docFile))
File.Delete(docFile);
string args = "\"/p:DocumentationFile=" + docFile + "\" \"/p:NoWarn=1591 1573 1574 1572 419\"";
string msbuild = Path.Combine(Path.GetDirectoryName(typeof(object).Assembly.Location), "..\\v3.5\\msbuild.exe");
string args = Path.GetFileName(projectFileName) + " \"/p:DocumentationFile=" + docFile + "\" \"/p:NoWarn=1591 1573 1574 1572 419\"";
string msbuild = Path.Combine(Path.GetDirectoryName(typeof(object).Assembly.Location), "msbuild.exe");
ProcessStartInfo info = new ProcessStartInfo(msbuild, args);
Debug.WriteLine(projectFolder + ">" + msbuild + " " + args);
info.WorkingDirectory = projectFolder;
info.WorkingDirectory = Path.GetDirectoryName(projectFileName);
Debug.WriteLine(info.WorkingDirectory + ">" + info.FileName + " " + info.Arguments);
Process p = Process.Start(info);
if (!p.WaitForExit(60000)) {
Debug.WriteLine("msbuild did not exit");

Loading…
Cancel
Save