Browse Source

Fixed bug in the AddInManager when using "@Filename" version numbers.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@940 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
cc829910d0
  1. 26
      doc/technotes/AddInManager.rtf
  2. 5
      src/Main/Core/Project/Src/AddInTree/AddIn/AddIn.cs
  3. 13
      src/Main/Core/Project/Src/AddInTree/AddIn/AddInReference.cs

26
doc/technotes/AddInManager.rtf

@ -21,11 +21,11 @@ Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpad @@ -21,11 +21,11 @@ Default Paragraph Font;}{\*\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpad
\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\leveltemplateid67567643\'02\'08.;}{\levelnumbers\'01;}\fi-180\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1703554508}}{\*\listoverridetable{\listoverride\listid1703554508
\listoverridecount9{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel
\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}{\lfolevel\listoverridestartat\levelstartat1}\ls1}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid92776\rsid162269
\rsid275879\rsid282022\rsid354646\rsid486424\rsid788270\rsid872985\rsid1071947\rsid1200377\rsid1316785\rsid1513728\rsid2234982\rsid2436208\rsid2520943\rsid2647199\rsid2842370\rsid2893809\rsid3089817\rsid3101537\rsid3551716\rsid4267723\rsid4460333
\rsid4677887\rsid4923913\rsid4930835\rsid5113596\rsid5664565\rsid5792094\rsid7228817\rsid7370522\rsid7553324\rsid7569188\rsid8219353\rsid8549883\rsid8941365\rsid9114940\rsid9778202\rsid9793049\rsid9922418\rsid10039453\rsid10122864\rsid10317377
\rsid10424196\rsid10442943\rsid10510865\rsid11092842\rsid11287406\rsid11412105\rsid11754104\rsid12064313\rsid12190290\rsid12398247\rsid12721314\rsid12869452\rsid13183743\rsid13246204\rsid13842745\rsid14247584\rsid14425394\rsid14484346\rsid15097273
\rsid15277116\rsid15285540\rsid15428640\rsid15619894\rsid15929841\rsid16607764}{\*\generator Microsoft Word 11.0.6502;}{\info{\title AddInManager}{\author mich}{\operator mich}{\creatim\yr2005\mo11\dy29\hr19\min58}{\revtim\yr2005\mo12\dy8\hr19\min16}
{\version69}{\edmins0}{\nofpages2}{\nofwords714}{\nofchars4502}{\nofcharsws5206}{\vern24579}}\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1134
\rsid275879\rsid282022\rsid354646\rsid486424\rsid788270\rsid872985\rsid1071947\rsid1200377\rsid1316785\rsid1513728\rsid2234982\rsid2436208\rsid2520943\rsid2647199\rsid2842370\rsid2892655\rsid2893809\rsid3089817\rsid3101537\rsid3551716\rsid4267723
\rsid4460333\rsid4677887\rsid4923913\rsid4930835\rsid5113596\rsid5664565\rsid5792094\rsid7228817\rsid7370522\rsid7553324\rsid7569188\rsid8219353\rsid8549883\rsid8941365\rsid9114940\rsid9702452\rsid9778202\rsid9793049\rsid9922418\rsid10039453\rsid10122864
\rsid10317377\rsid10424196\rsid10442943\rsid10510865\rsid11092842\rsid11287406\rsid11412105\rsid11754104\rsid12064313\rsid12190290\rsid12398247\rsid12721314\rsid12869452\rsid13183743\rsid13246204\rsid13842745\rsid14102904\rsid14116132\rsid14247584
\rsid14425394\rsid14484346\rsid15097273\rsid15277116\rsid15285540\rsid15428640\rsid15619894\rsid15929841\rsid16607764}{\*\generator Microsoft Word 11.0.6502;}{\info{\title AddInManager}{\author mich}{\operator mich}{\creatim\yr2005\mo11\dy29\hr19\min58}
{\revtim\yr2005\mo12\dy26\hr18\min38}{\version72}{\edmins0}{\nofpages2}{\nofwords714}{\nofchars4505}{\nofcharsws5209}{\vern24579}}\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1134
\deftab708\widowctrl\ftnbj\aenddoc\hyphhotz425\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1417\dgvorigin1417\dghshow1\dgvshow1
\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct
\asianbrkrule\rsidroot2436208\newtblstyruls\nogrowautofit \fet0\sectd \linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
@ -50,11 +50,11 @@ ng your AddIn, you should distribute the AddIn source code as a .zip and the bin @@ -50,11 +50,11 @@ ng your AddIn, you should distribute the AddIn source code as a .zip and the bin
\par }\pard\plain \s2\ql \li0\ri0\sb240\sa60\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid2436208 \b\i\f1\fs28\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {\lang1033\langfe1031\langnp1033\insrsid2436208
How to make your AddIns ready for the AddInManager
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2436208 \fs24\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {\lang1033\langfe1031\langnp1033\insrsid2436208
If you have created an AddIn using the template, it will not show up in the AddInManager, not even as pre-installed AddIn. This is because the AddInManager only supports that have an }{\b\lang1033\langfe1031\langnp1033\insrsid2436208 Identity}{
\lang1033\langfe1031\langnp1033\insrsid2436208 . You should create one for every AddIn that you write, but you have to ensure that it is unique. SharpDevelop will not load two AddIns that use
the same identity. The identity is the internal name of the AddIn.
\par You can use any name, but it is highly recommended that you use a naming pattern like for namespaces: }{\lang1033\langfe1031\langnp1033\insrsid10317377 \'93}{\lang1033\langfe1031\langnp1033\insrsid2436208 AuthorName.AddInName\'94
. You should use the same name as identity that you use as namespace for your AddIn.
If you have created an AddIn using the template, it will not show up in the AddInManager, not even as pre-installed AddIn. This is because the AddInManager only supports }{\lang1033\langfe1031\langnp1033\insrsid14102904 AddIns }{
\lang1033\langfe1031\langnp1033\insrsid2436208 that have an }{\b\lang1033\langfe1031\langnp1033\insrsid2436208 Identity}{\lang1033\langfe1031\langnp1033\insrsid2436208
. You should create one for every AddIn that you write, but you have to ensure that it is unique. SharpDevelop will not load two AddIns that use the same identity. The identity is the internal name of the AddIn.
\par You can use any name, but it is highly recommended that you use a naming pattern }{\lang1033\langfe1031\langnp1033\insrsid14116132 like}{\lang1033\langfe1031\langnp1033\insrsid2436208 namespaces: }{\lang1033\langfe1031\langnp1033\insrsid10317377 \'93}{
\lang1033\langfe1031\langnp1033\insrsid2436208 AuthorName.AddInName\'94. You should use the same name as identity that you use as namespace for your AddIn.
\par All AddIns maintained }{\lang1033\langfe1031\langnp1033\insrsid10510865 by the SharpDevelop team}{\lang1033\langfe1031\langnp1033\insrsid8941365 use}{\lang1033\langfe1031\langnp1033\insrsid2436208 \'93ICSharpCode.AddInName\'94. Don't use \'93ICSharpCode
\'94 for your AddIns; it is reserved for the SharpDevelop team! The reason why the default template does not include the identity section is because you really should think about which name you are going to use.
\par
@ -80,7 +80,7 @@ addin }{\f2\fs20\cf2\lang1033\langfe1031\langnp1033\insrsid13183743\charrsid1542 @@ -80,7 +80,7 @@ addin }{\f2\fs20\cf2\lang1033\langfe1031\langnp1033\insrsid13183743\charrsid1542
\par }{\lang1033\langfe1031\langnp1033\insrsid2436208
\par }{\lang1033\langfe1031\langnp1033\insrsid13183743 After }{\lang1033\langfe1031\langnp1033\insrsid162269 adding the <Manifest> section}{\lang1033\langfe1031\langnp1033\insrsid10442943 , your AddIn will show up in the AddInManager:}{
\lang1033\langfe1031\langnp1033\insrsid2436208
\par }{\lang1033\langfe1031\langnp1033\insrsid13842745\charrsid15929841 {\*\shppict{\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fLine}{\sv 0}}
\par }{\lang1033\langfe1031\langnp1033\insrsid2892655\charrsid15929841 {\*\shppict{\pict{\*\picprop\shplid1025{\sp{\sn shapeType}{\sv 75}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn pibFlags}{\sv 2}}{\sp{\sn fLine}{\sv 0}}
{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}}\picscalex100\picscaley100\piccropl0\piccropr0\piccropt0\piccropb0\picw8782\pich953\picwgoal4979\pichgoal540\pngblip\bliptag344806475{\*\blipuid 148d544b5457de0346f0cfd431565dbc}
89504e470d0a1a0a0000000d494844520000014c0000002408020000006ddc948b000000017352474200aece1ce9000000097048597300000ec400000ec201c3
71a99d00001bd049444154785eed5d677c56c59a7fdddf7e70ddfd70e9a04811c51557028420104a8084901008bd17418a4a1105af82085c14418a80885ca404
@ -800,6 +800,6 @@ How to create .sdaddin installation packages @@ -800,6 +800,6 @@ How to create .sdaddin installation packages
\par }{\lang1033\langfe1031\langnp1033\insrsid11092842 Creating these files is }{\lang1033\langfe1031\langnp1033\insrsid5664565 easy. Just compile the final version of your AddIn (maybe assign it a new version number). You\rquote re probably testing it as \'93
pre-installed\'94 AddIn inside the SharpDevelop\\AddIns directory; so you have to do only one thing to create the package: zip the files.}{\lang1033\langfe1031\langnp1033\insrsid11092842
\par }{\lang1033\langfe1031\langnp1033\insrsid282022 Create a .zip archive containing the files \'93MyAddIn.addin\'94 and \'93MyAddIn.dll\'94. You can also include other files (required libraries, .pdb debug information, etc.).}{
\lang1033\langfe1031\langnp1033\insrsid15285540 Rename the .zip to use the extension .sdaddin.}{\lang1033\langfe1031\langnp1033\insrsid14425394 That\rquote s all, your installation package is ready.}{
\f2\fs20\cf17\lang1033\langfe1031\langnp1033\insrsid282022
\lang1033\langfe1031\langnp1033\insrsid15285540 Rename the .zip to use the extension .sdaddin.}{\lang1033\langfe1031\langnp1033\insrsid14425394 That\rquote s }{\lang1033\langfe1031\langnp1033\insrsid9702452 all;}{
\lang1033\langfe1031\langnp1033\insrsid14425394 your installation package is ready.}{\f2\fs20\cf17\lang1033\langfe1031\langnp1033\insrsid282022
\par }}

5
src/Main/Core/Project/Src/AddInTree/AddIn/AddIn.cs

@ -144,6 +144,9 @@ namespace ICSharpCode.Core @@ -144,6 +144,9 @@ namespace ICSharpCode.Core
if (!reader.IsEmptyElement) {
throw new AddInLoadException("Include nodes must be empty!");
}
if (hintPath == null) {
throw new AddInLoadException("Cannot use include nodes when hintPath was not specified (e.g. when AddInManager reads a .addin file)!");
}
string fileName = Path.Combine(hintPath, reader.GetAttribute(0));
using (XmlTextReader includeReader = new XmlTextReader(fileName)) {
SetupAddIn(includeReader, addIn, Path.GetDirectoryName(fileName));
@ -179,7 +182,7 @@ namespace ICSharpCode.Core @@ -179,7 +182,7 @@ namespace ICSharpCode.Core
public static AddIn Load(TextReader textReader)
{
return Load(textReader, ".");
return Load(textReader, null);
}
public static AddIn Load(TextReader textReader, string hintPath)

13
src/Main/Core/Project/Src/AddInTree/AddIn/AddInReference.cs

@ -108,9 +108,16 @@ namespace ICSharpCode.Core @@ -108,9 +108,16 @@ namespace ICSharpCode.Core
entryVersion = System.Reflection.Assembly.GetEntryAssembly().GetName().Version;
return entryVersion;
}
string fileName = Path.Combine(hintPath, version.Substring(1));
FileVersionInfo info = FileVersionInfo.GetVersionInfo(fileName);
return new Version(info.FileMajorPart, info.FileMinorPart, info.FileBuildPart, info.FilePrivatePart);
if (hintPath != null) {
string fileName = Path.Combine(hintPath, version.Substring(1));
try {
FileVersionInfo info = FileVersionInfo.GetVersionInfo(fileName);
return new Version(info.FileMajorPart, info.FileMinorPart, info.FileBuildPart, info.FilePrivatePart);
} catch (FileNotFoundException ex) {
throw new AddInLoadException("Cannot get version '" + version + "': " + ex.Message);
}
}
return new Version(0,0,0,0);
} else {
return new Version(version);
}

Loading…
Cancel
Save