Bekerja dengan ruang kerja
Lapisan Ruang Kerja adalah titik awal untuk melakukan analisis kode dan refaktor di seluruh solusi. Dalam lapisan ini, API Ruang Kerja membantu Anda dalam mengatur semua informasi tentang proyek dalam solusi menjadi satu model objek, menawarkan Anda akses langsung ke model objek lapisan pengompilasi seperti teks sumber, pohon sintaks, model semantik, dan kompilasi tanpa perlu mengurai file, mengonfigurasi opsi, atau mengelola dependensi antar proyek.
Lingkungan host, seperti IDE, menyediakan ruang kerja untuk Anda sesuai dengan solusi terbuka. Dimungkinkan juga untuk menggunakan model ini di luar IDE hanya dengan memuat file solusi.
Ruang kerja
Ruang kerja adalah representasi aktif dari solusi Anda sebagai koleksi proyek, masing-masing dengan kumpulan dokumen. Ruang kerja biasanya terkait dengan lingkungan host yang terus berubah seiring dengan jenis pengguna atau memanipulasi properti.
Workspace menyediakan akses ke model solusi saat ini. Saat perubahan di lingkungan host terjadi, ruang kerja menembakkan peristiwa yang sesuai, dan properti Workspace.CurrentSolution diperbarui. Misalnya, saat pengguna mengetik di editor teks yang sesuai dengan salah satu dokumen sumber, ruang kerja menggunakan peristiwa untuk memberi sinyal bahwa model keseluruhan solusi telah berubah dan dokumen mana yang dimodifikasi. Anda kemudian bisa bereaksi terhadap perubahan tersebut dengan menganalisis model baru untuk kebenaran, menyoroti bidang signifikansi, atau membuat saran untuk perubahan kode.
Anda juga bisa membuat ruang kerja yang berdiri sendiri yang terputus dari lingkungan host atau digunakan dalam aplikasi yang tidak memiliki lingkungan host.
Solusi, proyek, dan dokumen
Meskipun ruang kerja bisa berubah setiap kali tombol ditekan, Anda dapat bekerja dengan model solusi secara terpisah.
Solusinya adalah model proyek dan dokumen yang tidak bisa diubah. Ini berarti bahwa model bisa dibagikan tanpa penguncian atau duplikasi. Setelah Anda mendapatkan instans solusi dari properti Workspace.CurrentSolution, instans tersebut tidak akan pernah berubah. Namun, seperti halnya pohon sintaks dan kompilasi, Anda bisa memodifikasi solusi dengan membangun instans baru berdasarkan solusi yang ada dan perubahan tertentu. Agar ruang kerja mencerminkan perubahan Anda, Anda harus menerapkan solusi yang diubah secara eksplisit kembali ke ruang kerja.
Proyek adalah bagian dari model solusi yang tidak bisa diubah secara keseluruhan. Ini mewakili seluruh dokumen kode sumber, opsi parse dan kompilasi, dan referensi perakitan dan proyek-ke-proyek. Dari proyek, Anda bisa mengakses kompilasi yang sesuai tanpa perlu menentukan dependensi proyek atau mengurai file sumber apa pun.
Dokumen juga merupakan bagian dari model solusi yang tidak bisa diubah secara keseluruhan. Dokumen mewakili file sumber tunggal dari mana Anda bisa mengakses teks file, pohon sintaks, dan model semantik.
Diagram berikut adalah representasi bagaimana Ruang Kerja yang berhubungan dengan lingkungan host, alat, dan cara pengeditan dilakukan.
Ringkasan
Roslyn mengekspos satu set API pengompilasi dan API Ruang Kerja yang memberikan informasi kaya tentang kode sumber Anda dan yang memiliki kesetiaan penuh dengan bahasa C # dan Visual Basic. .NET Compiler Platform SDK secara dramatis menurunkan hambatan ke entri untuk membuat alat dan aplikasi yang berfokus pada kode. Ini menciptakan banyak peluang untuk inovasi di bidang-bidang seperti pemrograman meta, pembuatan dan transformasi kode, penggunaan interaktif bahasa C# dan Visual Basic, dan penyematan C# dan Visual Basic dalam bahasa khusus-domain.