Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengapa menggunakan diagram dependensi?
Untuk memastikan bahwa kode tidak bertentangan dengan desainnya, validasi kode Anda dengan diagram dependensi di Visual Studio. Ini dapat membantu Anda:
Temukan konflik antara dependensi dalam kode Anda dan dependensi pada diagram dependensi.
Temukan dependensi yang mungkin dipengaruhi oleh perubahan yang diusulkan.
Misalnya, Anda dapat mengedit diagram dependensi untuk menampilkan potensi perubahan arsitektur lalu memvalidasi kode untuk melihat dependensi yang terpengaruh.
Refaktor atau migrasi kode ke desain yang berbeda.
Temukan kode atau dependensi yang memerlukan pekerjaan saat Anda memindahkan kode ke arsitektur yang berbeda.
Persyaratan
Visual Studio
Untuk membuat diagram dependensi untuk proyek .NET Core, Anda harus memiliki Visual Studio 2019 versi 16.2 atau yang lebih baru.
Solusi yang memiliki proyek pemodelan dengan diagram dependensi. Diagram dependensi ini harus ditautkan ke artefak dalam proyek C# atau Visual Basic yang ingin Anda validasi. Lihat Membuat diagram dependensi dari kode Anda.
Untuk melihat edisi Visual Studio mana yang mendukung fitur ini, lihat Dukungan edisi untuk arsitektur dan alat pemodelan.
Anda dapat memvalidasi kode secara manual dari diagram dependensi terbuka di Visual Studio atau dari prompt perintah. Anda juga dapat memvalidasi kode secara otomatis saat menjalankan build lokal atau build Azure Pipelines.
Penting
Jika Anda ingin menjalankan validasi lapisan menggunakan Team Foundation Server (TFS), Anda juga harus menginstal versi Visual Studio yang sama di server build Anda.
Validasi dependensi langsung
Validasi dependensi terjadi secara real time, dan kesalahan segera ditampilkan di Daftar Kesalahan.
Validasi langsung didukung untuk C# dan Visual Basic.
Untuk mengaktifkan analisis solusi lengkap saat menggunakan validasi dependensi langsung, buka pengaturan opsi dari bilah emas yang muncul di Daftar Kesalahan.
- Anda dapat menghapus bilah emas secara permanen jika Anda tidak tertarik untuk menampilkan semua masalah arsitektur dalam solusi Anda.
- Jika Anda tidak mengaktifkan analisis solusi penuh, analisis dilakukan hanya untuk file yang sedang diedit.
Saat meningkatkan proyek untuk mengaktifkan validasi langsung, dialog menunjukkan kemajuan konversi.
Saat memperbarui proyek untuk validasi dependensi langsung, versi paket NuGet ditingkatkan agar sama untuk semua proyek, dan merupakan versi tertinggi yang digunakan.
Menambahkan proyek validasi dependensi baru memicu pembaruan proyek.
Lihat apakah item mendukung validasi
Anda dapat menautkan lapisan ke situs web, dokumen Office, file teks biasa, dan file dalam proyek yang dibagikan di beberapa aplikasi, tetapi proses validasi tidak akan menyertakannya. Kesalahan validasi tidak akan muncul untuk referensi ke proyek atau rakitan yang ditautkan ke lapisan terpisah ketika tidak ada dependensi yang muncul di antara lapisan tersebut. Referensi tersebut tidak dianggap sebagai dependensi kecuali kode menggunakan referensi tersebut.
Pada diagram dependensi, pilih satu atau beberapa lapisan, klik kanan pilihan Anda, lalu klik Tampilkan Tautan.
Di Layer Explorer, lihat kolom Mendukung Validasi . Jika nilai salah, item tidak mendukung validasi.
Sertakan rakitan dan proyek .NET lainnya untuk validasi
Saat Anda menyeret item ke diagram dependensi, referensi ke rakitan atau proyek .NET terkait ditambahkan secara otomatis ke folder Referensi Lapisan dalam proyek pemodelan. Folder ini berisi referensi ke rakitan dan proyek yang dianalisis selama validasi. Anda dapat menyertakan rakitan dan proyek .NET lainnya untuk validasi tanpa menyeretnya secara manual ke diagram dependensi.
Di Penjelajah Solusi, klik kanan proyek pemodelan atau folder Referensi Lapisan , lalu klik Tambahkan Referensi.
Dalam kotak dialog Tambahkan Referensi , pilih rakitan atau proyek, lalu klik OK.
Memvalidasi kode secara manual
Jika Anda memiliki diagram dependensi terbuka yang ditautkan ke item solusi, Anda dapat menjalankan perintah Validasi pintasan dari diagram. Anda juga dapat menggunakan perintah untuk menjalankan perintah msbuild dengan properti kustom /p:ValidateArchitecture diatur ke True. Misalnya, saat Anda membuat perubahan dalam kode, lakukan validasi lapisan secara teratur sehingga Anda dapat menangkap konflik dependensi lebih awal.
Memvalidasi kode dari diagram dependensi terbuka
Klik kanan permukaan diagram, lalu klik Validasi Arsitektur.
Nota
Secara default, properti Tindakan Build pada file diagram dependensi (.layerdiagram) diatur ke Validasi sehingga diagram disertakan dalam proses validasi.
Jendela Daftar Kesalahan melaporkan kesalahan yang terjadi. Untuk informasi selengkapnya tentang kesalahan validasi, lihat Memecahkan masalah validasi lapisan.
Untuk melihat sumber setiap kesalahan, klik dua kali kesalahan di jendela Daftar Kesalahan .
Nota
Visual Studio mungkin menampilkan peta kode alih-alih sumber kesalahan. Ini terjadi ketika kode memiliki dependensi pada rakitan yang tidak ditentukan oleh diagram dependensi, atau kode kehilangan dependensi yang ditentukan oleh diagram dependensi. Tinjau peta kode atau kode untuk menentukan apakah dependensi harus ada. Untuk informasi selengkapnya tentang peta kode, lihat Memetakan dependensi di seluruh solusi Anda.
Untuk mengelola kesalahan, lihat Mengatasi kesalahan validasi lapisan.
Validasikan kode pada prompt perintah
Buka perintah Visual Studio.
Pilih salah satu metode berikut:
Untuk memvalidasi kode terhadap proyek pemodelan tertentu dalam solusi, jalankan MSBuild dengan properti kustom berikut.
msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true-atau-
Telusuri ke folder yang berisi file proyek pemodelan (.modelproj) dan diagram dependensi lalu jalankan MSBuild dengan properti kustom berikut:
msbuild /p:ValidateArchitecture=trueUntuk memvalidasi kode terhadap semua proyek pemodelan dalam solusi, jalankan MSBuild dengan properti kustom berikut:
msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true-atau-
Telusuri ke folder solusi, yang harus berisi proyek pemodelan yang berisi diagram dependensi, lalu jalankan MSBuild dengan properti kustom berikut:
msbuild /p:ValidateArchitecture=trueKesalahan apa pun yang terjadi akan dicantumkan. Untuk informasi selengkapnya tentang MSBuild, lihat Tugas MSBuild dan MSBuild.
Untuk informasi selengkapnya tentang kesalahan validasi, lihat Memecahkan masalah validasi lapisan.
Mengelola kesalahan validasi
Selama proses pengembangan, Anda mungkin ingin menekan beberapa konflik yang dilaporkan selama validasi. Misalnya, Anda mungkin ingin menekan kesalahan yang sudah Anda atasi atau yang tidak relevan dengan skenario tertentu Anda. Ketika Anda menyembunyikan kesalahan, adalah praktik yang baik untuk mencatat item kerja di Team Foundation.
Peringatan
Anda harus sudah tersambung ke Kontrol Kode Sumber (SCC) TFS untuk membuat atau menautkan ke item kerja. Jika Anda mencoba membuka koneksi ke TFS SCC yang berbeda, Visual Studio akan menutup solusi saat ini secara otomatis. Pastikan Anda sudah tersambung ke SCC yang sesuai sebelum mencoba membuat atau menautkan ke item kerja. Dalam rilis Visual Studio nanti, perintah menu tidak tersedia jika Anda tidak tersambung ke SCC.
Membuat item kerja untuk kesalahan validasi
- Di jendela Daftar Kesalahan , klik kanan kesalahan, arahkan ke Buat Item Kerja, lalu klik tipe item kerja yang ingin Anda buat.
Gunakan tugas-tugas ini untuk mengelola kesalahan validasi di jendela Daftar Kesalahan :
| Ke | Ikuti langkah-langkah ini |
|---|---|
| Menyembunyikan kesalahan yang dipilih selama validasi | Klik kanan satu atau beberapa kesalahan yang dipilih, arahkan ke Kelola Kesalahan Validasi, lalu klik Sembunyikan Kesalahan. Kesalahan yang disembunyikan muncul dengan pemformatan coretan. Saat Anda menjalankan validasi di lain waktu, kesalahan ini tidak akan muncul. Kesalahan yang disembunyikan dilacak dalam berkas .suppressions pada berkas diagram dependensi yang bersangkutan. |
| Berhenti menyembunyikan kesalahan terpilih | Klik kanan kesalahan yang dipilih atau kesalahan yang disembunyikan, arahkan ke Kelola Kesalahan Validasi, lalu klik Hentikan Menyembunyikan Kesalahan. Kesalahan yang dibisukan yang dipilih akan muncul pada saat Anda melakukan validasi berikutnya. |
| Pulihkan semua kesalahan yang disembunyikan di jendela Daftar Kesalahan | Klik kanan di mana saja di jendela Daftar Kesalahan , arahkan ke Kelola Kesalahan Validasi, lalu klik Perlihatkan Semua Kesalahan yang Ditekan. |
| Sembunyikan semua kesalahan yang disembunyikan dari jendela Daftar Kesalahan | Klik kanan di mana saja di jendela Daftar Kesalahan , arahkan ke Kelola Kesalahan Validasi, lalu klik Sembunyikan Semua Kesalahan yang Disembunyikan. |
Memvalidasi kode secara otomatis
Anda dapat melakukan validasi lapisan setiap kali Menjalankan build lokal. Jika tim Anda menggunakan Azure DevOps, Anda dapat melakukan validasi lapisan dengan penerimaan tertunda, yang dapat Anda tentukan dengan membuat tugas MSBuild khusus, dan menggunakan laporan build guna mengumpulkan kesalahan validasi. Untuk membuat proses penjagaan check-in, lihat Penjagaan check-in TFVC.
Untuk memvalidasi kode secara otomatis selama build lokal
Gunakan editor teks untuk membuka file proyek pemodelan (.modelproj), lalu sertakan properti berikut:
<ValidateArchitecture>true</ValidateArchitecture>
- atau -
Di Penjelajah Solusi, klik kanan proyek pemodelan yang berisi diagram atau diagram dependensi, lalu klik Properti.
Di jendela Properti , atur properti Validasi Arsitektur proyek pemodelan ke True.
Ini termasuk proyek pemodelan dalam proses validasi.
Di Penjelajah Solusi, klik file diagram dependensi (.layerdiagram) yang ingin Anda gunakan untuk validasi.
Di jendela Properti, pastikan properti Tindakan Build pada diagram diatur ke Validasi.
Ini termasuk diagram dependensi dalam proses validasi.
Untuk mengelola kesalahan di jendela Daftar Kesalahan, lihat Mengatasi kesalahan validasi lapisan.
Memecahkan masalah validasi lapisan
Tabel berikut ini menjelaskan masalah validasi lapisan dan resolusinya. Masalah ini berbeda dari kesalahan yang disebabkan oleh konflik antara kode dan desain. Untuk informasi selengkapnya tentang kesalahan ini, lihat Memecahkan masalah validasi lapisan.
| Issue | Kemungkinan Penyebab | Resolution |
|---|---|---|
| Kesalahan validasi tidak terjadi seperti yang diharapkan. | Validasi tidak berfungsi pada diagram dependensi yang disalin dari diagram dependensi lain di Penjelajah Solusi dan yang berada dalam proyek pemodelan yang sama. diagram dependensi yang disalin dengan cara ini berisi referensi yang sama dengan diagram dependensi asli. | Tambahkan diagram dependensi baru ke proyek pemodelan. Salin elemen dari diagram dependensi sumber ke diagram baru. |
Mengatasi kesalahan validasi lapisan
Saat Anda memvalidasi kode terhadap diagram dependensi, kesalahan validasi terjadi ketika kode bertentangan dengan desain. Misalnya, kondisi berikut dapat menyebabkan kesalahan validasi terjadi:
Artefak ditetapkan ke lapisan yang salah. Dalam hal ini, pindahkan artefak.
Artefak, seperti kelas, menggunakan kelas lain dengan cara yang bertentangan dengan arsitektur Anda. Dalam hal ini, refaktor kode untuk menghapus ketergantungan.
Untuk mengatasi kesalahan ini, perbarui kode hingga tidak ada lagi kesalahan yang muncul selama validasi. Anda dapat melakukan tugas ini dengan cara berulang.
Bagian berikut menguraikan sintaks yang digunakan dalam kesalahan ini, menjelaskan arti kesalahan ini, dan menyarankan apa yang dapat Anda lakukan untuk mengatasi atau mengelolanya.
| Syntax | Deskripsi |
|---|---|
| ArtifactN(ArtifactTypeN) |
ArtefakN adalah artefak yang terkait dengan lapisan pada diagram dependensi. ArtifactTypeN adalah jenis ArtefakN, seperti Kelas atau Metode, misalnya: MySolution.MyProject.MyClass.MyMethod(Method) |
| NamespaceNamen | Nama namespace. |
| LayerNamen | Nama lapisan pada diagram dependensi. |
| DependencyType | Jenis hubungan dependensi antara Artifact1 dan Artifact2. Misalnya, Artefak1 memiliki hubungan Memanggil dengan Artefak2. |
| Sintaks Kesalahan | Deskripsi Kesalahan |
|---|---|
| DV0001: Dependensi Tidak Valid | Masalah ini dilaporkan ketika elemen kode (namespace, jenis, anggota) dipetakan ke Lapisan mereferensikan elemen kode yang dipetakan ke lapisan lain, tetapi tidak ada panah dependensi antara lapisan ini dalam diagram validasi dependensi yang berisi lapisan ini. Ini adalah pelanggaran batasan dependensi. |
| DV1001: Nama namespace tidak valid | Masalah ini dilaporkan pada elemen kode yang terkait dengan lapisan yang properti "Nama Namespace Yang Diizinkan" tidak berisi namespace tempat elemen kode ini ditentukan. Ini adalah pelanggaran batasan penamaan. Perhatikan bahwa sintaks "Nama Namespace yang Diizinkan" adalah daftar namespace yang dipisahkan oleh titik koma, di mana elemen kode yang terkait dengan lapisan diizinkan untuk ditentukan. |
| DV1002: Dependensi pada namespace yang tidak dapat direferensikan | Masalah ini dilaporkan pada elemen kode yang berhubungan dengan sebuah lapisan dan mereferensikan elemen kode lain yang ditentukan dalam namespace yang didefinisikan dalam properti "Namespace Tidak Dapat Direferensikan" dari lapisan tersebut. Ini adalah pelanggaran batasan penamaan. Perhatikan bahwa properti "Namespace yang tidak dapat direferensikan" didefinisikan sebagai daftar namespace yang dipisahkan titik koma yang tidak boleh direferensikan dalam elemen kode yang terkait dengan lapisan ini. |
| DV1003: Nama namespace tidak diizinkan | Masalah ini dilaporkan pada elemen kode yang terkait dengan lapisan yang propertinya mengandung ruang nama di mana elemen kode ini didefinisikan. Ini adalah pelanggaran batasan penamaan. Perhatikan bahwa properti "Nama namespace yang tidak diizinkan" didefinisikan sebagai daftar namespace yang dipisahkan titik koma di mana elemen kode yang berhubungan dengan Lapisan ini tidak boleh didefinisikan. |
| DV2001: Keberadaan Diagram Lapisan | Masalah ini dilaporkan pada proyek yang tidak menyertakan file diagram dependensi, tetapi mengacu pada penganalisis validasi dependensi. Jika Validasi Dependensi belum digunakan, Anda dapat menghapus "Microsoft.DependencyValidation.Analyzers" langsung dari Penjelajah Solusi atau menekan peringatan ini. Untuk menambahkan diagram dependensi, lihat Membuat diagram dependensi dari kode Anda. |
| DV2002: Dasar Jenis yang Tidak Dipetakan | Masalah ini dilaporkan ketika elemen kode tidak dipetakan ke lapisan apa pun. |
| DV3001: Tautan Hilang | Layer 'LayerName' menautkan ke 'Artefak' yang tidak dapat ditemukan. Apakah Anda kehilangan referensi perakitan? |
| DV9001: Analisis arsitektur menemukan kesalahan internal | Hasil mungkin tidak lengkap. Untuk informasi selengkapnya, lihat log peristiwa build terperinci atau jendela output. |