[VS.Net automation] informatie opslaan in .suo file

Pagina: 1
Acties:

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:35

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
Ik ben bezig met een add-in voor visual studio .Net, namelijk eentje die bookmarks persistent maakt en ze in een lijstje laat zien. Maar om te kijken wat mijn opties zijn en om debugging redenen heb ik een eerste implementatie gemaakt dmv macro's.

Het werkt aardig, alleen het opslaan van de data gaat niet helemaal zoals ik wil. Momenteel gebruik ik het DTE.Solution.Globals object om de data in op te slaan. Hierdoor komt de data echter in de .sln file, wat niet echt handig is aangezien bookmarks een user-optie zijn, en dus niet bij de solution zelf horen (maar natuurlijk wel aan de solution gekoppeld moeten zijn). Anderen hoeven immers niet jouw bookmarks te zien, en ook het elke keer uit en in moeten checken van de solution file onder sourcecontrol als de bookmarks wijzigen is vervelend.

Visual studio slaat de gebruikers-opties die aan een solution gekoppeld zijn in een .suo file in dezelfde directory als de .sln. Hierin staat informatie over de geopende bestanden, window layout, breakpoints, etc.. Ook de bookmarks van geopende bestanden worden hierin opgeslagen, dus de perfecte plaats om mijn eigen data ook neer te zetten.

Het punt is echter: ik heb geen idee hoe ik die data daarin opgeslagen krijg. Ik kan er niets over vinden in de help, en ook met google kom ik niet verder. Heeft iemand enig idee hoe ik eigen data in die .suo file krijg? Ik kan natuurlijk ook zelf een apart bestandje maken, en dat is de volgende stap als ik er echt niet uitkom, maar volgens mij kunnen add-ins hun data ook in die file kwijt en dus moet ik het ook kunnen :)

Ben trouwens benieuwd hoeveel mensen hier ervaring hebben met vs.net automation, maar ben bang dat het tegen gaat vallen ;)

[ Voor 5% gewijzigd door .oisyn op 06-11-2005 03:17 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • whoami
  • Registratie: December 2000
  • Laatst online: 25-04 12:00
Ik heb er geen ervaring mee, maar jouw post heeft wel m'n interesse gewekt.

Ik heb even gegoogled, en ben op deze blog - post uitgekomen: klik
Blijkbaar moet je dus IVsPersistSolutionOpts implementeren.

In de msdn vind ik deze interface wel niet direct terug

Wellicht vind je in het boek 'inside vs.net' wel meer informatie. Het kan zijn dat ik dat boek ergens @work heb liggen.

[ Voor 26% gewijzigd door whoami op 06-11-2005 10:09 ]

https://fgheysels.github.io/


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:35

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
Hmmm VSIP dus, ik had gehoopt dat niet te hoeven gebruiken... Volgens mij moet je een VSIP package door MS laten signen willen anderen het kunnen installeren. Ik heb de VSIP SDK hier ook, en daar zit een speciale devenv uitbreiding bij die het laden van unsigned packages toelaat.

Heb inside vs.net zelf ook, maar die ligt op m'n werk ;). Dat boek viel me trouwens een beetje tegen, er staat niet zo heel veel meer informatie in dan in de MSDN staat, en VSIP laten ze dacht ik geheel buiten beschouwing.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:35

.oisyn

Moderator Devschuur®

Demotivational Speaker

Topicstarter
Nope, staat ook niet in het boek. Ik denk dat ik het maar in een apart bestandje ga schrijven dat naast je project file staat (solutionname.suo.bookmarks oid)

Voor de geïnteresseerden, hier is een draft: http://crew.tweakers.net/oisyn/Bookmarks.vsmacros
Even inladen in de macro-explorer, en event handling aanzetten (daar vraagt vs.net om als je 'm inlaadt)

Momenteel maakt hij voor je bookmarks een outputwindowpane genaamd "Bookmarks", waar alle bookmarks in komen te staan. Hij hooked de bookmark commands zodat het wordt geupdate als je een bookmark plaatst (Edit.ToggleBookmark) of verwijderd (Edit.ClearBookmarks). Momenteel slaat hij ze op in een stukje global geheugen die bewaard wordt tussen alle devenv sessies. Heb het maar even niet aan een solution gekoppeld omdat het dan meer kwaad dan goed doet hier op mijn werk (die extra data moet echt niet in de .sln komen die onder sourcecontrol staat ;)), dus dan maar even global. Documents met bookmarks kun je gewoon sluiten, en als je in de bookmark lijst dubbelklikt opent hij ze weer en zet ie de bookmarks terug.

[ Voor 7% gewijzigd door .oisyn op 07-11-2005 17:36 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.