Werken met een werkruimte

De laag Werkruimten is het startpunt voor het uitvoeren van codeanalyse en het herstructureren van volledige oplossingen. Binnen deze laag helpt de Werkruimte-API u bij het ordenen van alle informatie over de projecten in een oplossing in één objectmodel, zodat u rechtstreeks toegang hebt tot compilerlaagobjectmodellen, zoals brontekst, syntaxisstructuren, semantische modellen en compilaties zonder dat u bestanden hoeft te parseren, opties hoeft te configureren of afhankelijkheden tussen projecten hoeft te beheren.

Hostomgevingen, zoals een IDE, bieden een werkruimte die overeenkomt met de geopende oplossing. Het is ook mogelijk om dit model buiten een IDE te gebruiken door gewoon een oplossingsbestand te laden.

Werkplek

Een werkruimte is een actieve weergave van uw oplossing als een verzameling projecten, elk met een verzameling documenten. Een werkruimte is doorgaans gekoppeld aan een hostomgeving die voortdurend verandert als gebruikerstypen of eigenschappen bewerkt.

De Workspace oplossing biedt toegang tot het huidige model van de oplossing. Wanneer er een wijziging in de hostomgeving optreedt, worden de bijbehorende gebeurtenissen geactiveerd en wordt de Workspace.CurrentSolution eigenschap bijgewerkt. Wanneer de gebruiker bijvoorbeeld een teksteditor typt die overeenkomt met een van de brondocumenten, gebruikt de werkruimte een gebeurtenis om aan te geven dat het algemene model van de oplossing is gewijzigd en welk document is gewijzigd. U kunt vervolgens reageren op deze wijzigingen door het nieuwe model te analyseren op juistheid, belangrijke gebieden te markeren of een suggestie te doen voor een codewijziging.

U kunt ook zelfstandige werkruimten maken die zijn losgekoppeld van de hostomgeving of die worden gebruikt in een toepassing die geen hostomgeving heeft.

Oplossingen, projecten en documenten

Hoewel een werkruimte kan veranderen telkens wanneer een sleutel wordt ingedrukt, kunt u werken met het model van de oplossing in isolatie.

Een oplossing is een onveranderbaar model van de projecten en documenten. Dit betekent dat het model kan worden gedeeld zonder vergrendeling of duplicatie. Nadat u een oplossingsexemplaren van de Workspace.CurrentSolution eigenschap hebt verkregen, wordt dat exemplaar nooit gewijzigd. Net als bij syntaxisstructuren en compilaties kunt u echter oplossingen wijzigen door nieuwe exemplaren te maken op basis van bestaande oplossingen en specifieke wijzigingen. Als u wilt dat de werkruimte uw wijzigingen weergeeft, moet u de gewijzigde oplossing expliciet weer toepassen op de werkruimte.

Een project maakt deel uit van het algemene onveranderbare oplossingsmodel. Het vertegenwoordigt alle broncodedocumenten, parserings- en compilatieopties, en zowel assembly- als project-naar-project-verwijzingen. Vanuit een project hebt u toegang tot de bijbehorende compilatie zonder dat u projectafhankelijkheden hoeft te bepalen of bronbestanden hoeft te parseren.

Een document maakt ook deel uit van het algemene onveranderbare oplossingsmodel. Een document vertegenwoordigt één bronbestand waaruit u toegang hebt tot de tekst van het bestand, de syntaxisstructuur en het semantische model.

Het volgende diagram is een weergave van hoe de werkruimte zich verhoudt tot de hostomgeving, hulpprogramma's en hoe wijzigingen worden aangebracht.

the relationships between different elements of a workspace containing projects and source files

Samenvatting

Roslyn maakt een set compiler-API's en werkruimte-API's beschikbaar die uitgebreide informatie biedt over uw broncode en die volledig trouw is met de C#- en Visual Basic-talen. De .NET Compiler Platform SDK verlaagt de drempel voor het maken van programmacodegerichte hulpprogramma's en toepassingen aanzienlijk. Het creëert veel mogelijkheden voor innovatie op gebieden zoals metaprogrammering, het genereren en transformeren van code, interactief gebruik van de talen C# en Visual Basic, en het insluiten van C# en Visual Basic in domeinspecifieke talen.