From d68d56b34c6cc47811614aee2a2ef4024b2f8a94 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Tue, 20 Dec 2005 17:03:31 +0000 Subject: [PATCH] Now MSBuild property $(SolutionDir) is available when compiling single projects. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@926 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- doc/technotes/AddInTree.rtf | 104 +++++++++--------- .../Base/Project/Src/Project/MSBuildEngine.cs | 11 ++ .../Project/Src/Project/MSBuildProject.cs | 10 +- .../Project/Src/Project/Solution/Solution.cs | 2 +- 4 files changed, 73 insertions(+), 54 deletions(-) diff --git a/doc/technotes/AddInTree.rtf b/doc/technotes/AddInTree.rtf index 49a432ead8..43dfb77443 100644 --- a/doc/technotes/AddInTree.rtf +++ b/doc/technotes/AddInTree.rtf @@ -1,14 +1,14 @@ {\rtf1\ansi\ansicpg1252\uc1\deff37\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1031\deflangfe1031{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f5\fmodern\fcharset0\fprq1{\*\panose 02070409020205020404}Courier{\*\falt Courier New};} {\f37\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Thorndale{\*\falt Times New Roman};}{\f38\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Albany{\*\falt Arial};}{\f39\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;} -{\f40\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Cumberland{\*\falt Courier New};}{\f41\fnil\fcharset2\fprq0{\*\panose 00000000000000000000}StarSymbol{\*\falt Arial Unicode MS};}{\f139\froman\fcharset238\fprq2 Times New Roman CE;} -{\f140\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f142\froman\fcharset161\fprq2 Times New Roman Greek;}{\f143\froman\fcharset162\fprq2 Times New Roman Tur;}{\f144\froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\f145\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f146\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f147\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f149\fswiss\fcharset238\fprq2 Arial CE;} -{\f150\fswiss\fcharset204\fprq2 Arial Cyr;}{\f152\fswiss\fcharset161\fprq2 Arial Greek;}{\f153\fswiss\fcharset162\fprq2 Arial Tur;}{\f154\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f155\fswiss\fcharset178\fprq2 Arial (Arabic);} -{\f156\fswiss\fcharset186\fprq2 Arial Baltic;}{\f157\fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f159\fmodern\fcharset238\fprq1 Courier New CE;}{\f160\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f162\fmodern\fcharset161\fprq1 Courier New Greek;} -{\f163\fmodern\fcharset162\fprq1 Courier New Tur;}{\f164\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f165\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f166\fmodern\fcharset186\fprq1 Courier New Baltic;} -{\f167\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f529\fswiss\fcharset238\fprq2 Verdana CE;}{\f530\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f532\fswiss\fcharset161\fprq2 Verdana Greek;}{\f533\fswiss\fcharset162\fprq2 Verdana Tur;} -{\f536\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f537\fswiss\fcharset163\fprq2 Verdana (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0; +{\f40\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Cumberland{\*\falt Courier New};}{\f41\fnil\fcharset2\fprq0{\*\panose 00000000000000000000}StarSymbol{\*\falt Arial Unicode MS};}{\f138\froman\fcharset238\fprq2 Times New Roman CE;} +{\f139\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f141\froman\fcharset161\fprq2 Times New Roman Greek;}{\f142\froman\fcharset162\fprq2 Times New Roman Tur;}{\f143\froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\f144\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f145\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f146\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f148\fswiss\fcharset238\fprq2 Arial CE;} +{\f149\fswiss\fcharset204\fprq2 Arial Cyr;}{\f151\fswiss\fcharset161\fprq2 Arial Greek;}{\f152\fswiss\fcharset162\fprq2 Arial Tur;}{\f153\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f154\fswiss\fcharset178\fprq2 Arial (Arabic);} +{\f155\fswiss\fcharset186\fprq2 Arial Baltic;}{\f156\fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f158\fmodern\fcharset238\fprq1 Courier New CE;}{\f159\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f161\fmodern\fcharset161\fprq1 Courier New Greek;} +{\f162\fmodern\fcharset162\fprq1 Courier New Tur;}{\f163\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f164\fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f165\fmodern\fcharset186\fprq1 Courier New Baltic;} +{\f166\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f528\fswiss\fcharset238\fprq2 Verdana CE;}{\f529\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f531\fswiss\fcharset161\fprq2 Verdana Greek;}{\f532\fswiss\fcharset162\fprq2 Verdana Tur;} +{\f535\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f536\fswiss\fcharset163\fprq2 Verdana (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0; \red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green100\blue0; \red139\green69\blue19;\red0\green139\blue139;\red25\green25\blue112;\red165\green42\blue42;}{\stylesheet{\ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 \snext0 Normal;}{ \s1\ql \li0\ri0\sb240\sa120\keepn\nowidctlpar\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0 \b\f38\fs32\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 \sbasedon16 \snext15 heading 1;}{ @@ -37,16 +37,16 @@ Contents Heading;}{\s27\ql \li0\ri0\nowidctlpar\tqr\tldot\tx9638\aspalpha\faauto \i\cf1\lang0\langfe255\langnp0\langfenp255 \sbasedon10 Emphasis;}{\*\cs47 \additive \i\cf1\lang0\langfe255\langnp0\langfenp255 Citation;}{\*\cs48 \additive \b\cf1\lang0\langfe255\langnp0\langfenp255 Strong Emphasis;}{\*\cs49 \additive \f40\cf1\lang0\langfe255\langnp0\langfenp255 Source Text;}{\*\cs50 \additive \f40\cf1\lang0\langfe255\langnp0\langfenp255 Example;}{\*\cs51 \additive \f40\cf1\lang0\langfe255\langnp0\langfenp255 User Entry;}{\*\cs52 \additive \i\cf1\lang0\langfe255\langnp0\langfenp255 Variable;}{\*\cs53 \additive \cf1\lang0\langfe255\langnp0\langfenp255 Definition;}{\*\cs54 \additive \f40\cf1\lang0\langfe255\langnp0\langfenp255 Teletype;}{\*\cs55 \additive -\f2\cf1\lang0\langfe255\langnp0\langfenp255 Code;}{\*\cs56 \additive \ul\cf2 \sbasedon10 \styrsid9855141 Hyperlink;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid1193469\rsid3563042\rsid3692308\rsid5582925\rsid9005571\rsid9334114 -\rsid9855141\rsid14162400\rsid15608638\rsid16393729}{\*\generator Microsoft Word 11.0.6502;}{\info{\author Christoph Wille}{\operator mich}{\creatim\yr2002\mo2\dy22\hr20\min46}{\revtim\yr2005\mo11\dy26\hr14\min35}{\printim\yr2113\mo1\dy1}{\version6} -{\edmins0}{\nofpages5}{\nofwords1531}{\nofchars9647}{\*\company AlphaSierraPapa}{\nofcharsws11156}{\vern24579}}\paperw11906\paperh16838\margl1170\margr1130\margt1134\margb1997 +\f2\cf1\lang0\langfe255\langnp0\langfenp255 Code;}{\*\cs56 \additive \ul\cf2 \sbasedon10 \styrsid9855141 Hyperlink;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid1193469\rsid3476083\rsid3563042\rsid3692308\rsid5468609\rsid5582925 +\rsid7873711\rsid9005571\rsid9334114\rsid9855141\rsid14162400\rsid15608638\rsid15736429\rsid16393729}{\*\generator Microsoft Word 11.0.6502;}{\info{\author Christoph Wille}{\operator mich}{\creatim\yr2002\mo2\dy22\hr20\min46} +{\revtim\yr2005\mo12\dy19\hr19\min1}{\printim\yr2113\mo1\dy1}{\version9}{\edmins0}{\nofpages5}{\nofwords1530}{\nofchars9646}{\*\company AlphaSierraPapa}{\nofcharsws11154}{\vern24579}}\paperw11906\paperh16838\margl1170\margr1130\margt1134\margb1997 \deftab1250\widowctrl\ftnbj\aenddoc\hyphhotz425\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\lytprtmet\hyphcaps0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3 \jcompress\viewkind1\viewscale100\nolnhtadjtbl\rsidroot3563042 \fet0{\*\ftnsep \pard\plain \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 \chftnsep \par }}{\*\ftnsepc \pard\plain \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 \chftnsepc \par }}{\*\aftnsep \pard\plain \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 \chftnsep \par }}{\*\aftnsepc \pard\plain \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 \chftnsepc \par }}\sectd \sbknone\linex0\footery1440\sectdefaultcl\sftnbj {\footer \pard\plain \s19\ql \li0\ri0\nowidctlpar\tqc\tx4819\tqr\tx9638\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 \tab \'a9 - Daniel Grunwald 2005\tab }{\field{\*\fldinst {\insrsid9334114 \\page}}{\fldrslt {\lang1024\langfe1024\noproof\insrsid15608638 1}}}{\insrsid9334114 + Daniel Grunwald 2005\tab }{\field{\*\fldinst {\insrsid9334114 \\page}}{\fldrslt {\lang1024\langfe1024\noproof\insrsid7873711 1}}}{\insrsid9334114 \par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}} {\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 @@ -55,64 +55,64 @@ Contents Heading;}{\s27\ql \li0\ri0\nowidctlpar\tqr\tldot\tx9638\aspalpha\faauto \par }{\b\fs56\loch\af1\insrsid9334114 \hich\af37\dbch\af0\loch\f1 AddIn System Documentation}{\insrsid9334114 \par }{\b\f1\fs32\insrsid9334114 Version 0.1 \par }{\b\f1\insrsid9334114 -\par }{\b\loch\af1\insrsid9334114 \hich\af37\dbch\af0\loch\f1 by Daniel Grunwald, }{\field{\*\fldinst {\b\loch\af1\insrsid9334114 \hich\af37\dbch\af0\loch\f1 HYPERLINK "mailto:daniel@danielgrunwald.de" }{\b\loch\af1\insrsid5582925\charrsid9334114 -{\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b400000006d00610069006c0074006f003a00640061006e00690065006c004000640061006e00690065006c006700720075006e00770061006c0064002e00640065000000000000}}}{\fldrslt { +\par }{\b\loch\af1\insrsid9334114 \hich\af37\dbch\af0\loch\f1 by Daniel Grunwald, }{\field{\*\fldinst {\b\loch\af1\insrsid9334114 \hich\af37\dbch\af0\loch\f1 HYPERLINK "mailto:daniel@danielgrunwald.de" }{\b\loch\af1\insrsid3476083\charrsid9334114 +{\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b0200000003000000e0c9ea79f9bace118c8200aa004ba90b400000006d00610069006c0074006f003a00640061006e00690065006c004000640061006e00690065006c006700720075006e00770061006c0064002e0064006500000000000000}}}{\fldrslt { \cs38\b\f1\ul\cf9\insrsid9334114 daniel@danielgrunwald.de}}}{\insrsid9334114 \par \par }{\fs22\insrsid9334114 \par \sect }\sectd \sbknone\linex0\footery1440\sectdefaultcl\sftnbj {\footer \pard\plain \s19\ql \li0\ri0\nowidctlpar\tqc\tx4819\tqr\tx9638\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 \tab \'a9 - Daniel Grunwald 2005\tab }{\field{\*\fldinst {\insrsid9334114 \\page}}{\fldrslt {\lang1024\langfe1024\noproof\insrsid15608638 4}}}{\insrsid9334114 + Daniel Grunwald 2005\tab }{\field{\*\fldinst {\insrsid9334114 \\page}}{\fldrslt {\lang1024\langfe1024\noproof\insrsid5468609 2}}}{\insrsid9334114 \par }}\pard\plain \s26\ql \li0\ri0\sb240\sa120\keepn\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \b\f39\fs32\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 Contents \par }\pard\plain \s27\ql \li0\ri0\nowidctlpar\tqr\tldot\tx9638\aspalpha\faauto\rin0\lin0\itap0 \f1\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\field\fldedit{\*\fldinst {\fs22\insrsid9855141 TOC \\o "1-3" \\h \\z \\u }}{\fldrslt {\field\fldedit{\*\fldinst {\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 }{\lang1024\langfe1024\noproof\insrsid9855141 HYPERLINK \\l "_Toc120778769"}{\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 }{ -\ul\cf2\lang1024\langfe1024\noproof\insrsid5582925\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300310032003000370037003800370036003900000002}}}{\fldrslt { -\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 1 About the AddIn System Documentation}{\lang1024\langfe1024\noproof\webhidden\insrsid9855141 \tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 -PAGEREF _Toc120778769 \\h }{\lang1024\langfe1024\noproof\insrsid5582925 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003600390000007f}}}{\fldrslt { +\ul\cf2\lang1024\langfe1024\noproof\insrsid3476083\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003600390000000200}}}{\fldrslt { +\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 1 About the AddIn System Documentation}{\lang1024\langfe1024\noproof\webhidden\insrsid9855141 \tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 + PAGEREF _Toc120778769 \\h }{\lang1024\langfe1024\noproof\insrsid3476083 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003600390000007f00}}}{\fldrslt { \lang1024\langfe1024\noproof\webhidden\insrsid9855141 1}}}}}{\f0\cf0\lang1024\langfe1024\noproof\langnp1031\langfenp1031\insrsid9855141 \par }{\field\fldedit{\*\fldinst {\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 }{\lang1024\langfe1024\noproof\insrsid9855141 HYPERLINK \\l "_Toc120778770"}{\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 } -{\ul\cf2\lang1024\langfe1024\noproof\insrsid5582925\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003100320030003700370038003700370030000000ae}}}{\fldrslt { +{\ul\cf2\lang1024\langfe1024\noproof\insrsid3476083\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003100320030003700370038003700370030000000ae00}}}{\fldrslt { \cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 2 AddIn Tree}{\lang1024\langfe1024\noproof\webhidden\insrsid9855141 \tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 PAGEREF _Toc120778770 \\h }{ -\lang1024\langfe1024\noproof\insrsid5582925 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003100320030003700370038003700370030000000b7}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 1}}}}}{ +\lang1024\langfe1024\noproof\insrsid3476083 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003100320030003700370038003700370030000000b76d}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 1}}}}}{ \f0\cf0\lang1024\langfe1024\noproof\langnp1031\langfenp1031\insrsid9855141 \par }\pard\plain \s28\ql \li283\ri0\nowidctlpar\tqr\tldot\tx9638\aspalpha\faauto\rin0\lin283\itap0 \f1\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\field\fldedit{\*\fldinst { \cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 }{\lang1024\langfe1024\noproof\insrsid9855141 HYPERLINK \\l "_Toc120778771"}{\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 }{ -\ul\cf2\lang1024\langfe1024\noproof\insrsid5582925\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003100320030003700370038003700370031000000ba}}}{\fldrslt { +\ul\cf2\lang1024\langfe1024\noproof\insrsid3476083\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003100320030003700370038003700370031000000ba00}}}{\fldrslt { \cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 2.1 AddIn Definition}{\lang1024\langfe1024\noproof\webhidden\insrsid9855141 \tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 PAGEREF _Toc120778771 \\ -h }{\lang1024\langfe1024\noproof\insrsid5582925 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003100320030003700370038003700370031000000cb}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 2}}}}}{ +h }{\lang1024\langfe1024\noproof\insrsid3476083 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f0063003100320030003700370038003700370031000000cb00}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 2}}}}}{ \f0\cf0\lang1024\langfe1024\noproof\langnp1031\langfenp1031\insrsid9855141 \par }{\field\fldedit{\*\fldinst {\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 }{\lang1024\langfe1024\noproof\insrsid9855141 HYPERLINK \\l "_Toc120778772"}{\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 } -{\ul\cf2\lang1024\langfe1024\noproof\insrsid5582925\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300310032003000370037003800370037003200000000}}}{\fldrslt { +{\ul\cf2\lang1024\langfe1024\noproof\insrsid3476083\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003700320000000000}}}{\fldrslt { \cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 2.2 The Runtime Section}{\lang1024\langfe1024\noproof\webhidden\insrsid9855141 \tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 PAGEREF _Toc120778772 -\\h }{\lang1024\langfe1024\noproof\insrsid5582925 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300310032003000370037003800370037003200000000}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 2}}}}}{ -\f0\cf0\lang1024\langfe1024\noproof\langnp1031\langfenp1031\insrsid9855141 +\\h }{\lang1024\langfe1024\noproof\insrsid3476083 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003700320000000000}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 2}}} +}}{\f0\cf0\lang1024\langfe1024\noproof\langnp1031\langfenp1031\insrsid9855141 \par }{\field\fldedit{\*\fldinst {\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 }{\lang1024\langfe1024\noproof\insrsid9855141 HYPERLINK \\l "_Toc120778773"}{\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 } -{\ul\cf2\lang1024\langfe1024\noproof\insrsid5582925\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300310032003000370037003800370037003300000000}}}{\fldrslt { +{\ul\cf2\lang1024\langfe1024\noproof\insrsid3476083\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003700330000000066}}}{\fldrslt { \cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 2.3 Doozers}{\lang1024\langfe1024\noproof\webhidden\insrsid9855141 \tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 PAGEREF _Toc120778773 \\h }{ -\lang1024\langfe1024\noproof\insrsid5582925 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300310032003000370037003800370037003300000000}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 3}}}}}{ +\lang1024\langfe1024\noproof\insrsid3476083 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003700330000000065}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 3}}}}}{ \f0\cf0\lang1024\langfe1024\noproof\langnp1031\langfenp1031\insrsid9855141 \par }{\field\fldedit{\*\fldinst {\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 }{\lang1024\langfe1024\noproof\insrsid9855141 HYPERLINK \\l "_Toc120778774"}{\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 } -{\ul\cf2\lang1024\langfe1024\noproof\insrsid5582925\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300310032003000370037003800370037003400000000}}}{\fldrslt { +{\ul\cf2\lang1024\langfe1024\noproof\insrsid3476083\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003700340000000020}}}{\fldrslt { \cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 2.4 Building Items in the AddIn Tree}{\lang1024\langfe1024\noproof\webhidden\insrsid9855141 \tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 - PAGEREF _Toc120778774 \\h }{\lang1024\langfe1024\noproof\insrsid5582925 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300310032003000370037003800370037003400000000}}}{\fldrslt { + PAGEREF _Toc120778774 \\h }{\lang1024\langfe1024\noproof\insrsid3476083 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003700340000000061}}}{\fldrslt { \lang1024\langfe1024\noproof\webhidden\insrsid9855141 4}}}}}{\f0\cf0\lang1024\langfe1024\noproof\langnp1031\langfenp1031\insrsid9855141 \par }\pard\plain \s27\ql \li0\ri0\nowidctlpar\tqr\tldot\tx9638\aspalpha\faauto\rin0\lin0\itap0 \f1\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\field\fldedit{\*\fldinst {\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 } -{\lang1024\langfe1024\noproof\insrsid9855141 HYPERLINK \\l "_Toc120778775"}{\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 }{\ul\cf2\lang1024\langfe1024\noproof\insrsid5582925\charrsid9855141 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300310032003000370037003800370037003500000000}}}{\fldrslt {\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 3. Conditions}{ -\lang1024\langfe1024\noproof\webhidden\insrsid9855141 \tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 PAGEREF _Toc120778775 \\h }{\lang1024\langfe1024\noproof\insrsid5582925 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300310032003000370037003800370037003500000000}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 5}}}}}{ +{\lang1024\langfe1024\noproof\insrsid9855141 HYPERLINK \\l "_Toc120778775"}{\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 }{\ul\cf2\lang1024\langfe1024\noproof\insrsid3476083\charrsid9855141 {\*\datafield +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003700350000000014}}}{\fldrslt {\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 3. Conditions}{ +\lang1024\langfe1024\noproof\webhidden\insrsid9855141 \tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 PAGEREF _Toc120778775 \\h }{\lang1024\langfe1024\noproof\insrsid3476083 {\*\datafield +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003700350000000000}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 5}}}}}{ \f0\cf0\lang1024\langfe1024\noproof\langnp1031\langfenp1031\insrsid9855141 \par }{\field\fldedit{\*\fldinst {\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 }{\lang1024\langfe1024\noproof\insrsid9855141 HYPERLINK \\l "_Toc120778776"}{\cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 } -{\ul\cf2\lang1024\langfe1024\noproof\insrsid5582925\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300310032003000370037003800370037003600000000}}}{\fldrslt { +{\ul\cf2\lang1024\langfe1024\noproof\insrsid3476083\charrsid9855141 {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003700360000000000}}}{\fldrslt { \cs56\ul\cf2\lang1024\langfe1024\noproof\insrsid9855141\charrsid14162400 4. List of available Doozers and ConditionEvaluators}{\lang1024\langfe1024\noproof\webhidden\insrsid9855141 \tab }{\field{\*\fldinst { -\lang1024\langfe1024\noproof\webhidden\insrsid9855141 PAGEREF _Toc120778776 \\h }{\lang1024\langfe1024\noproof\insrsid5582925 {\*\datafield -08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300310032003000370037003800370037003600000000}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 5}}}}}{ +\lang1024\langfe1024\noproof\webhidden\insrsid9855141 PAGEREF _Toc120778776 \\h }{\lang1024\langfe1024\noproof\insrsid3476083 {\*\datafield +08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f00630031003200300037003700380037003700360000000000}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden\insrsid9855141 5}}}}}{ \f0\cf0\lang1024\langfe1024\noproof\langnp1031\langfenp1031\insrsid9855141 \par }\pard\plain \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 }}\pard\plain \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\fs22\insrsid9334114 \par }\pard\plain \s1\ql \li0\ri0\sb240\sa120\keepn\nowidctlpar\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0 \b\f38\fs32\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 {\*\bkmkstart _Toc120778769}1 About the AddIn System Documentation {\*\bkmkend _Toc120778769} -\par }\pard\plain \s15\qj \li0\ri0\sa120\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 This document desc -ribes the AddIn system used by SharpDevelop. If you plan to write AddIns for SharpDevelop, you should read the \'93AddInBuildingGuide\'94 to learn how you should structure your project. +\par }\pard\plain \s15\qj \li0\ri0\sa120\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 This document describes the AddIn system used by SharpDevelop. If you + plan to write AddIns for SharpDevelop, you should read the \'93AddInBuildingGuide\'94 to learn how you should structure your project. \par }\pard \s15\ql \li0\ri0\sa120\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\insrsid9334114 This document describes both the AddIn system in general (ICSharpCode.Core) and common extensions points for SharpDevelop. \par }\pard\plain \s1\ql \li0\ri0\sb240\sa120\keepn\nowidctlpar\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0 \b\f38\fs32\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 {\*\bkmkstart _Toc120778770}2 AddIn Tree{\*\bkmkend _Toc120778770} @@ -127,20 +127,20 @@ Compiled AddIns consist of two (or more) files: the AddIn xml definition, the ad \par \par }\pard\plain \s2\ql \li0\ri0\nowidctlpar\aspalpha\faauto\outlinelevel1\rin0\lin0\itap0 \f38\fs28\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 {\*\bkmkstart _Toc120778771}2.1 AddIn Definition{\*\bkmkend _Toc120778771} \par }\pard\plain \qj \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 Every }{\b\insrsid9334114 node}{\insrsid9334114 in the AddIn-tree has a }{\b\insrsid9334114 Codon}{ -\insrsid9334114 . The in ICSharpCode.Core implementation, the AddInTreeNode class has a Codon property which is null for paths and points to a Codon instance for nodes. +\insrsid9334114 . }{\insrsid7873711 In the }{\insrsid9334114 ICSharpCode.Core implementation, the AddInTreeNode class has a Codon property which is null for paths and points to a Codon instance for nodes. \par }\pard \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\insrsid9334114 Let's look at the XML way of defining a node with codon: \par }{\f2\fs20\insrsid9334114 }{\insrsid9334114 -\par }\pard \qj \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\insrsid9334114 When the AddIn tree is loaded, an instance of the }{\b\insrsid9334114 Codon }{\insrsid9334114 class is created. It's name property is set to \'93MenuItem\'94 -, it's ID property to \'93Build\'94. The other attributes are put into a \'93Properties\'94 container (works like a Hashtable). +\par }\pard \qj \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\insrsid9334114 When the AddIn tree is loaded, an instance of the }{\b\insrsid9334114 Codon }{\insrsid9334114 class is created. Its name property is set to \'93MenuItem\'94, its + ID property to \'93Build\'94. The other attributes are put into a \'93Properties\'94 container (works like a Hashtable). \par }\pard \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\insrsid9334114 The codon contains the information about the menu item: label, shortcut, icon and the fully qualified name of the class being run when the item is clicked. \par \par The important thing about the AddIn tree is that it is constructed by combining the AddIn definitions from all AddIns. For example, the StartPage.addin file from the start page AddIn contains this: \par }\pard \qj \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\f2\fs20\insrsid9334114 -\par }\pard \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\fs20\loch\af2\insrsid9334114 \tab }{\fs20\loch\af2\insrsid9334114 \hich\af37\dbch\af0\loch\f2 \par }{\fs20\loch\af2\insrsid9334114 \hich\af37\dbch\af0\loch\f2 }{\insrsid9334114 \par }\pard \qj \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\insrsid9334114 The path }{\f2\fs20\insrsid9334114 "/SharpDevelop/Workbench/MainMenu/View"}{\insrsid9334114 - is defined in both the main AddIn file in SharpDevelop and in the StartPage's AddIn file. When loading the files, ICSharpCode.Core mer -ges the contents of the paths into the AddIn tree. The attributes insertafter and insertbefore are special, they control at what positions the items are inserted by specifying the IDs of the previous and next item. + is defined in both the main AddIn file in SharpDevelop and in the StartPage's AddIn file. When loading the files, ICSharpCode.Core merges the contents o +f the paths into the AddIn tree. The attributes insertafter and insertbefore are special, they control at what positions the items are inserted by specifying the IDs of the previous and next item. \par }\pard\plain \s2\ql \li0\ri0\nowidctlpar\aspalpha\faauto\outlinelevel1\rin0\lin0\itap0 \f38\fs28\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 {\*\bkmkstart _Toc120778772}2.2 The Runtime Section{\*\bkmkend _Toc120778772} \par }\pard\plain \qj \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 Each AddIn definition file has one instance of the }{\b\insrsid9334114 AddIn}{\insrsid9334114 class. That class contains the information found in the header and runtime section of the AddIn definition file. Each }{\b\insrsid9334114 Codon}{\insrsid9334114 class created for nodes in that file also hold a reference to that AddIn class. @@ -160,14 +160,16 @@ ges the contents of the paths into the AddIn tree. The attributes insertafter an \par }\pard \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\fs20\loch\af2\insrsid9334114 \tab \tab }{\fs20\loch\af2\insrsid9334114 \hich\af37\dbch\af0\loch\f2 }{\insrsid9334114 \par }{\fs20\loch\af2\insrsid9334114 \tab \tab }{\fs20\loch\af2\insrsid9334114 \hich\af37\dbch\af0\loch\f2 }{\insrsid9334114 \par }{\fs20\loch\af2\insrsid9334114 \tab }{\fs20\loch\af2\insrsid9334114 \hich\af37\dbch\af0\loch\f2 }{\insrsid9334114 -\par }\pard \qj \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\insrsid9334114 The import elements are stored in the RunTimes property of the AddIn class. The AddIn class has also a method \'93CreateObject\'94. CreateObje -ct is used when the class of a menu item should be created. Normally, CreateObject is called for menu items }{\b\insrsid9334114 when the item is clicked the first time}{\insrsid9334114 +\par }\pard \qj \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\insrsid9334114 The import elements are stored in the RunTimes property of the AddIn class. The AddIn class has also a method \'93CreateObject\'94. CreateObject is use +d when the class of a menu item should be created. Normally, CreateObject is called for menu items }{\b\insrsid9334114 when the item is clicked the first time}{\insrsid9334114 . CreateObject will go through all imported assemblies and look for the specified class name (in the order the imports are placed in the runtime section). \par }\pard \ql \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\insrsid9334114 The imported assemblies are loaded when CreateObject needs them the first time. This leads to the result that }{\b\insrsid9334114 AddIns are loaded when they are first used}{ \insrsid9334114 . This is a great improvement for SharpDevelop's startup time. -\par CreateObject looks for the classes only in the assemblies specified. When you want to use a class from SharpDevelop's main assembly (e.g. a common command like Undo etc.), you have to import that assembly, too. It won't be loaded two times when it is -referenced by multiple addins. Since addins can live in any subdirectory, it isn't possible to specify a fixed path back to ICSharpCode.SharpDevelop.dll. There is a special way to reference assemblies in the main directory, though: When the assembly attri -bute starts with a colon (}{\f2\fs20\insrsid9334114 }{\insrsid9334114 ), SharpDevelop will load the assembly using \'93Assembly.Load\'94 instead of the normal \'93Assembly.LoadFrom\'94 +\par Crea +teObject looks for the classes only in the assemblies specified. When you want to use a class from SharpDevelop's main assembly (e.g. a common command like Undo etc.), you have to import that assembly, too. It won't be loaded two times when it is referenc +e +d by multiple addins. Since addins can live in any subdirectory, it isn't possible to specify a fixed path back to ICSharpCode.SharpDevelop.dll. There is a special way to reference assemblies in the main directory, though: When the assembly attribute star +ts with a colon (}{\f2\fs20\insrsid9334114 }{\insrsid9334114 ), SharpDevelop will load the assembly using \'93Assembly.Load\'94 instead of the normal \'93Assembly.LoadFrom\'94 . You won't have to specify the path back, but there is another important difference: }{\b\insrsid9334114 You do not use the .dll file extension.}{\insrsid9334114 \par }\pard \qj \li0\ri0\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 {\b\insrsid9334114 \par }{\insrsid9334114 The runtime section can also contain doozer and condition evaluator definitions, read the doozer and conditions sections for more information on that. @@ -289,6 +291,6 @@ You will get all classes defined in the path, in the order specified by their in \par }\pard\plain \s15\ql \li0\ri0\sa120\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 TODO: Write this section \par }\pard\plain \s1\ql \li0\ri0\sb240\sa120\keepn\nowidctlpar\aspalpha\faauto\outlinelevel0\rin0\lin0\itap0 \b\f38\fs32\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 {\*\bkmkstart _Toc120778776} 4. List of available Doozers and ConditionEvaluators{\*\bkmkend _Toc120778776} -\par }\pard\plain \s15\ql \li0\ri0\sa120\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 The list}{\insrsid16393729 s are automatically generated from the source code and saved - as ConditionList.html and DoozerList.html in this directory}{\insrsid9334114 . +\par }\pard\plain \s15\ql \li0\ri0\sa120\nowidctlpar\aspalpha\faauto\rin0\lin0\itap0 \f37\fs24\cf1\lang1033\langfe255\cgrid\langnp1033\langfenp255 {\insrsid9334114 The list}{\insrsid16393729 s are automatically generat +ed from the source code and saved as ConditionList.html and DoozerList.html in this directory}{\insrsid9334114 . \par }} \ No newline at end of file diff --git a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs index 5e3f885cdb..cd851efddf 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildEngine.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildEngine.cs @@ -58,6 +58,14 @@ namespace ICSharpCode.SharpDevelop.Project } } + SortedList additionalProperties = new SortedList(); + + public IDictionary AdditionalProperties { + get { + return additionalProperties; + } + } + string configuration; /// @@ -147,6 +155,9 @@ namespace ICSharpCode.SharpDevelop.Project foreach (KeyValuePair entry in MSBuildProperties) { engine.GlobalProperties.SetProperty(entry.Key, entry.Value); } + foreach (KeyValuePair entry in this.engine.additionalProperties) { + engine.GlobalProperties.SetProperty(entry.Key, entry.Value); + } SharpDevelopLogger logger = new SharpDevelopLogger(this.engine, results); engine.RegisterLogger(logger); diff --git a/src/Main/Base/Project/Src/Project/MSBuildProject.cs b/src/Main/Base/Project/Src/Project/MSBuildProject.cs index ceaddef1ad..8cb4fef3b8 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildProject.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildProject.cs @@ -422,11 +422,17 @@ namespace ICSharpCode.SharpDevelop.Project // isDirty = TaskService.Errors != 0; // } - public static CompilerResults RunMSBuild(string fileName, string target, string configuration, string platform) + public static CompilerResults RunMSBuild(string fileName, string target, string configuration, string platform, bool isSingleProject) { WorkbenchSingleton.Workbench.GetPad(typeof(CompilerMessageView)).BringPadToFront(); // BeforeBuild(); MSBuildEngine engine = new MSBuildEngine(); + if (isSingleProject) { + string dir = ProjectService.OpenSolution.Directory; + if (!dir.EndsWith("/") && !dir.EndsWith("\\")) + dir += Path.DirectorySeparatorChar; + engine.AdditionalProperties.Add("SolutionDir", dir); + } engine.Configuration = configuration; engine.Platform = platform; engine.MessageView = TaskService.BuildMessageViewCategory; @@ -439,7 +445,7 @@ namespace ICSharpCode.SharpDevelop.Project public CompilerResults RunMSBuild(string target) { - return RunMSBuild(this.FileName, target, this.Configuration, this.Platform); + return RunMSBuild(this.FileName, target, this.Configuration, this.Platform, true); } public override CompilerResults Build() diff --git a/src/Main/Base/Project/Src/Project/Solution/Solution.cs b/src/Main/Base/Project/Src/Project/Solution/Solution.cs index 4c13eca755..bcbe2bd49d 100644 --- a/src/Main/Base/Project/Src/Project/Solution/Solution.cs +++ b/src/Main/Base/Project/Src/Project/Solution/Solution.cs @@ -627,7 +627,7 @@ namespace ICSharpCode.SharpDevelop.Project public CompilerResults RunMSBuild(string target) { - return MSBuildProject.RunMSBuild(FileName, target, preferences.ActiveConfiguration, preferences.ActivePlatform); + return MSBuildProject.RunMSBuild(FileName, target, preferences.ActiveConfiguration, preferences.ActivePlatform, false); } public CompilerResults Build()