Share via


Arbeta med en arbetsyta

Arbetsytelagret är startpunkten för att utföra kodanalys och omstrukturera hela lösningar. I det här lagret hjälper API:et för arbetsyta dig att organisera all information om projekten i en lösning i en enda objektmodell, vilket ger dig direkt åtkomst till kompilatorlagerobjektmodeller som källtext, syntaxträd, semantiska modeller och kompileringar utan att behöva parsa filer, konfigurera alternativ eller hantera beroenden mellan projekt.

Värdmiljöer, till exempel en IDE, tillhandahåller en arbetsyta för dig som motsvarar den öppna lösningen. Du kan också använda den här modellen utanför en IDE genom att helt enkelt läsa in en lösningsfil.

Arbetsyta

En arbetsyta är en aktiv representation av din lösning som en samling projekt, var och en med en samling dokument. En arbetsyta är vanligtvis kopplad till en värdmiljö som ständigt ändras som en användartyp eller manipulerar egenskaper.

Workspace Ger åtkomst till lösningens aktuella modell. När en ändring i värdmiljön inträffar utlöses motsvarande händelser på arbetsytan och egenskapen Workspace.CurrentSolution uppdateras. När användaren till exempel skriver i en textredigerare som motsvarar ett av källdokumenten använder arbetsytan en händelse för att signalera att lösningens övergripande modell har ändrats och vilket dokument som har ändrats. Du kan sedan reagera på dessa ändringar genom att analysera den nya modellen för korrekthet, markera viktiga områden eller föreslå en kodändring.

Du kan också skapa fristående arbetsytor som är frånkopplade från värdmiljön eller som används i ett program som inte har någon värdmiljö.

Lösningar, projekt och dokument

Även om en arbetsyta kan ändras varje gång en nyckel trycks in kan du arbeta med lösningens modell isolerat.

En lösning är en oföränderlig modell för projekt och dokument. Det innebär att modellen kan delas utan låsning eller duplicering. När du har hämtat en lösningsinstans från egenskapen ändras aldrig den instansen Workspace.CurrentSolution . Men precis som med syntaxträd och kompileringar kan du ändra lösningar genom att skapa nya instanser baserat på befintliga lösningar och specifika ändringar. För att arbetsytan ska återspegla dina ändringar måste du uttryckligen tillämpa den ändrade lösningen på arbetsytan.

Ett projekt är en del av den övergripande oföränderliga lösningsmodellen. Den representerar alla källkodsdokument, parsnings- och kompileringsalternativ samt både sammansättnings- och projekt-till-projekt-referenser. Från ett projekt kan du komma åt motsvarande kompilering utan att behöva fastställa projektberoenden eller parsa några källfiler.

Ett dokument är också en del av den övergripande oföränderliga lösningsmodellen. Ett dokument representerar en enda källfil från vilken du kan komma åt texten i filen, syntaxträdet och den semantiska modellen.

Följande diagram är en representation av hur arbetsytan relaterar till värdmiljön, verktygen och hur ändringar görs.

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

Sammanfattning

Roslyn exponerar en uppsättning API:er för kompilatorer och API:er för arbetsytor som ger omfattande information om din källkod och som har fullständig återgivning med C#- och Visual Basic-språken. .NET Compiler Platform SDK sänker avsevärt inträdesbarriären för att skapa kodfokuserade verktyg och program. Det skapar många möjligheter till innovation inom områden som metaprogrammering, kodgenerering och transformering, interaktiv användning av C# och Visual Basic-språk samt inbäddning av C# och Visual Basic på domänspecifika språk.