Bagikan melalui


Membuat tugas build dan debug untuk pengembangan "Buka Folder"

Visual Studio dapat secara otomatis menjalankan berbagai bahasa pemrograman dan basis kode. Opsi Buka Folder memungkinkan Anda segera menjalankan kode untuk basis kode yang dikenali tanpa instruksi khusus dan tanpa membuat proyek. Pengembang biasanya menggunakan pendekatan ini untuk pengujian cepat.

Beberapa basis kode memerlukan alat build kustom yang tidak dikenali atau tidak dapat segera diproses dengan opsi Buka Folder . Untuk skenario ini, Anda dapat menentukan tugas build untuk menginstruksikan Visual Studio cara membuat dan men-debug kode. Tugas build menentukan semua item yang diperlukan bahasa untuk membangun dan menjalankan kode, dan dapat digunakan untuk menyelesaikan hampir semua operasi yang diperlukan.

Artikel ini menjelaskan cara menentukan tugas build untuk mengonfigurasi pengaturan build dan debug untuk basis kode tanpa proyek yang tidak dikenal di Visual Studio.

Menjelajahi file konfigurasi JSON

Untuk menyesuaikan basis kode tanpa proyek, Visual Studio menyediakan dua file JSON (.json) untuk pengaturan konfigurasi: tugas dan peluncuran. Visual Studio membuat (atau membuka) file-file ini sesuai kebutuhan, saat Anda memilih opsi tertentu di Visual Studio Penjelajah Solusi.

Tabel berikut ini menjelaskan file JSON dan cara membuatnya di Penjelajah Solusi.

File JSON Tujuan konfigurasi Akses file
tasks.vs.json Tentukan perintah build kustom, sakelar pengompilasi kustom, dan tugas arbitrer (terkait nonbuild). Di Penjelajah Solusi, klik kanan file atau folder untuk membuka menu konteks, dan pilih Konfigurasikan Tugas.
launch.vs.json Tentukan argumen baris perintah untuk penelusuran kesalahan. Di Penjelajah Solusi, klik kanan file atau folder untuk membuka menu konteks, dan pilih Tambahkan Konfigurasi Debug.

Menambahkan file JSON ke kontrol sumber

Secara default, tugas dan meluncurkan file JSON tidak terlihat di Penjelajah Solusi. File terletak di folder tersembunyi bernama .vs di folder root (\) basis kode Anda. File disembunyikan karena umumnya tidak ditambahkan ke kontrol sumber. Anda dapat melihat file tersembunyi di Visual Studio dengan memilih opsi Tampilkan Semua File di Penjelajah Solusi.

Jika Anda ingin menambahkan file JSON ke kontrol sumber, seret file ke folder root (\) basis kode Anda di sistem file Anda. File menjadi terlihat di Penjelajah Solusi dan tersedia untuk kontrol sumber.

Menentukan tugas dengan tasks.vs.json

Anda dapat mengotomatiskan skrip build dan operasi eksternal pada file di ruang kerja Anda saat ini dengan menjalankan tindakan sebagai tugas langsung di Visual Studio. Untuk mengonfigurasi tugas baru, klik kanan file atau folder di Penjelajah Solusi dan pilih Konfigurasikan Tugas:

Cuplikan layar yang memperlihatkan bagaimana Anda dapat mengonfigurasi tugas untuk mengotomatiskan skrip build dan operasi eksternal pada file di Penjelajah Solusi.

Tindakan ini membuat (atau membuka) file tasks.vs.json di folder .vs . Anda menentukan tugas build atau tugas arbitrer dalam file ini, dan Visual Studio menambahkan nama tugas sebagai perintah ke menu klik kanan Penjelajah Solusi. Anda dapat memanggil tugas dengan memilih perintah terkait di Penjelajah Solusi.

Tugas kustom dapat ditambahkan ke file individual, atau ke semua file dengan jenis tertentu. Misalnya, file paket NuGet dapat dikonfigurasi untuk memiliki tugas "Pulihkan Paket", atau semua file sumber dapat dikonfigurasi untuk memiliki tugas analisis statis, seperti linter untuk semua file JavaScript (.js).

Membuat tugas untuk alat yang tidak dikenal

Jika basis kode Anda menggunakan alat build kustom yang tidak dikenali oleh Visual Studio, Anda tidak dapat menjalankan dan men-debug kode di Visual Studio hingga Anda menyelesaikan langkah-langkah konfigurasi tambahan.

Anda dapat menentukan tugas build untuk menginstruksikan Visual Studio cara membuat, membangun kembali, dan membersihkan kode Anda. File tasks.vs.json menggabungkan perulangan pengembangan dalam Visual Studio dengan alat build kustom yang Anda tentukan untuk basis kode Anda.

Misalkan basis kode Anda memiliki satu file C# bernama hello.cs. Makefile untuk basis kode seperti itu mungkin terlihat seperti contoh ini:

build: directory hello.exe

hello.exe: hello.cs
    csc -debug hello.cs /out:bin\hello.exe

clean:
    del bin\hello.exe bin\hello.pdb

rebuild: clean build

directory: bin

bin:
    md bin

Untuk makefile serupa yang berisi target build, clean, dan buildild, Anda dapat menggunakan opsi Konfigurasi Tugas untuk makefile dan menentukan file tasks.vs.json berikut. File JSON mendefinisikan tugas untuk membangun, membangun kembali, dan membersihkan basis kode dengan menggunakan NMAKE sebagai alat build:

{
  "version": "0.2.1",
  "outDir": "\"${workspaceRoot}\\bin\"",
  "tasks": [
    {
      "taskName": "makefile-build",
      "appliesTo": "makefile",
      "type": "launch",
      "contextType": "build",
      "command": "nmake",
      "args": [ "build" ],
      "envVars": {
        "VSCMD_START_DIR": "\"${workspaceRoot}\""
      }
    },
    {
      "taskName": "makefile-clean",
      "appliesTo": "makefile",
      "type": "launch",
      "contextType": "clean",
      "command": "nmake",
      "args": [ "clean" ],
      "envVars": {
        "VSCMD_START_DIR": "\"${workspaceRoot}\""
      }
    },
    {
      "taskName": "makefile-rebuild",
      "appliesTo": "makefile",
      "type": "launch",
      "contextType": "rebuild",
      "command": "nmake",
      "args": [ "rebuild" ],
      "envVars": {
        "VSCMD_START_DIR": "\"${workspaceRoot}\""
      }
    }
  ]
}

Setelah Anda menentukan tugas build di file tasks.vs.json, Visual Studio menambahkan perintah tugas yang sesuai ke menu klik kanan di Penjelajah Solusi. Dalam contoh ini, opsi Build, Rebuild, dan Clean ditambahkan ke menu klik kanan untuk instans makefile di basis kode:

Cuplikan layar yang memperlihatkan tugas Build, Rebuild, dan Clean untuk makefile yang ditambahkan ke menu klik kanan di Penjelajah Solusi.

Visual Studio mencantumkan perintah baru pada menu klik kanan setelah perintah Konfigurasi Tugas sesuai dengan pengaturannya contextType . "build", "rebuild", dan "clean" adalah perintah Build dan tercantum dalam bagian "Build" di menu klik kanan.

Saat Anda memilih perintah tugas kustom pada menu klik kanan, operasi akan dijalankan. Visual Studio menampilkan output perintah di jendela Output dan kesalahan build apa pun di Daftar Kesalahan.

Membuat tugas untuk operasi arbitrer

Anda dapat menentukan tugas kustom dalam file tasks.vs.json untuk operasi arbitrer apa pun. Anda mungkin menentukan tugas untuk menampilkan nama file yang saat ini dipilih di jendela Output atau mencantumkan file dalam folder yang ditentukan.

Contoh: Nama tampilan file yang saat ini dipilih

Contoh berikut menunjukkan file tasks.vs.json yang menentukan satu tugas arbitrer. Saat Anda memanggil tugas ini, operasi menampilkan nama file dari file JavaScript (.js) yang saat ini dipilih.

{
  "version": "0.2.1",
  "tasks": [
    {
      "taskName": "Echo filename",
      "appliesTo": "*.js",
      "type": "default",
      "command": "${env.COMSPEC}",
      "args": [ "echo ${file}" ]
    }
  ]
}

Kode untuk tugas ini menentukan properti berikut:

  • taskName: Nama perintah tugas untuk ditampilkan Visual Studio di menu klik kanan. Dalam hal ini, nama file Echo.
  • appliesTo: File untuk perintah tugas yang akan ditindak. Dalam hal ini, file JavaScript (.js).
  • command: Perintah yang akan dipanggil. Tugas ini menggunakan COMSPEC variabel lingkungan untuk mengidentifikasi penerjemah baris perintah (biasanya cmd.exe).
  • args: Argumen apa pun yang akan diteruskan saat Visual Studio memanggil perintah.
  • ${file}: Argumen untuk tugas ini menyertakan makro yang mengambil file yang saat ini dipilih di Penjelajah Solusi.

Setelah menyimpan file tasks.vs.json , Anda dapat mengklik kanan file JavaScript (.js) apa pun di folder dan memilih Nama file Echo. Visual Studio menampilkan nama file yang dipilih di jendela Output .

Contoh: Mencantumkan file dan subfolder

Contoh berikut menunjukkan file tasks.vs.json yang menentukan tugas untuk mencantumkan file dan subfolder folder bin :

{
  "version": "0.2.1",
  "outDir": "\"${workspaceRoot}\\bin\"",
  "tasks": [
    {
      "taskName": "List Outputs",
      "appliesTo": "*",
      "type": "default",
      "command": "${env.COMSPEC}",
      "args": [ "dir ${outDir}" ]
    }
  ]
}

Kode untuk tugas ini menentukan properti berikut:

  • taskName: Nama perintah tugas untuk menu klik kanan, Output Daftar.
  • appliesTo: Tugas ini bertindak pada semua item dalam folder yang ditentukan, seperti yang ditunjukkan oleh penggunaan kartubebas (*).
  • command: Mirip dengan contoh sebelumnya, tugas menggunakan COMSPEC variabel lingkungan untuk mengidentifikasi penerjemah baris perintah (cmd.exe).
  • args: Saat Visual Studio memanggil tugas, visual Studio meneruskan panggilan ke dir perintah, yang mencantumkan item direktori (folder).
  • ${outDir}{outDir}: Makro ditentukan sebelum tasks blok. Ini mengidentifikasi folder bin sebagai direktori untuk bertindak.

Tugas ini berlaku untuk semua file dalam basis kode. Saat Visual Studio menambahkan nama perintah untuk tugas arbitrer ke menu klik kanan, visual Studio mengawali perintah dengan Jalankan, seperti dalam Jalankan Output Daftar.

Jika Anda membuka menu klik kanan untuk file apa pun di Penjelajah Solusi, perintah tugas Jalankan Output Daftar muncul sebagai perintah terakhir di bagian "Build" di menu. Saat Anda memilih Jalankan Output Daftar, Visual Studio mencantumkan konten folder bin untuk basis kode di jendela Output :

Cuplikan layar yang memperlihatkan tugas arbitrer yang ditambahkan ke menu klik kanan di Visual Studio Penjelajah Solusi.

Menggunakan beberapa file task.vs.json

Anda dapat memiliki beberapa file tasks.vs.json di folder root (\) dan subfolder basis kode Anda. Pendekatan ini memberi Anda fleksibilitas untuk menentukan perilaku yang berbeda untuk subfolder atau file tertentu di basis kode Anda.

Visual Studio mengagregasi atau mengambil alih pengaturan di seluruh basis kode dan memprioritaskan file dalam urutan berikut:

  1. Pengaturan file di folder .vs di folder root (\).
  2. Folder tempat pengaturan dihitung.
  3. Folder induk folder saat ini, hingga dan termasuk folder root (\).
  4. Menyetel file di folder root (\).

Aturan agregasi ini hanya berlaku untuk instans file tasks.vs.json .

Memeriksa properti untuk tasks.vs.json

Bagian berikut ini menjelaskan beberapa properti yang bisa Anda tentukan dalam file tasks.vs.json .

Mengatur properti appliesTo

Anda dapat membuat tugas untuk file atau folder apa pun dengan menentukan nama file atau folder dengan appliesTo properti , seperti "appliesTo": "hello.js".

Tabel berikut ini meringkas nilai masker file yang bisa Anda gunakan dengan appliesTo properti untuk menghasilkan perilaku tugas tertentu:

Nilai (masker file) Tugas berlaku untuk
"*" Semua file dan folder di ruang kerja
"*/" Semua folder di ruang kerja
"*.js" Semua file dengan ekstensi JavaScript (.js) di ruang kerja
"/*.js" Semua file dengan ekstensi JavaScript (.js) di folder root (\) ruang kerja
"src/*/" Semua subfolder folder src
"makefile" Semua file bernama makefile di ruang kerja
"/makefile" Hanya file bernama makefile di folder root (\) ruang kerja

Menggunakan makro dalam argumen tugas

Anda dapat meneruskan makro sebagai argumen untuk tugas guna menambah perilaku tugas saat Visual Studio memanggil perintah.

Tabel berikut ini mencantumkan beberapa contoh makro:

Makro Deskripsi Contoh
${env.<VARIABLE>} Menentukan variabel lingkungan apa pun yang dapat digunakan di prompt perintah pengembang. Untuk informasi selengkapnya, lihat Perintah Pengembang dan PowerShell Pengembang. ${env.PATH}, ${env.COMSPEC}
${workspaceRoot} Menyediakan jalur lengkap ke folder ruang kerja. C:\sources\hello, C:\sources\hello\bin
${file} Menyediakan jalur lengkap ke file atau folder. C:\sources\hello\src\hello.js*, C:\sources\hello\src\test.js*
${relativeFile} Menyediakan jalur relatif ke file atau folder. src\hello.js*, bin\hello.exe
${fileBasename} Menyediakan nama file, tidak termasuk jalur atau ekstensi. hello, test
${fileDirname} Menyediakan jalur lengkap ke file, tidak termasuk nama file. C:\sources\hello\src*, C:\sources\hello\bin\test\*
${fileExtname} Menyediakan ekstensi dari file yang dipilih. .js, , .cs.exe

Mengonfigurasi penelusuran kesalahan dengan launch.vs.json

Visual Studio menyediakan file launch.vs.json yang dapat Anda gunakan untuk mengonfigurasi penelusuran kesalahan untuk basis kode Anda.

Catatan

Untuk mengonfigurasi proyek CMake untuk penelusuran kesalahan, lihat Mengonfigurasi sesi debugging CMake.

  1. Di Penjelajah Solusi, klik kanan file yang dapat dieksekusi (.exe) dan pilih Tambahkan Konfigurasi Debug:

    Cuplikan layar yang memperlihatkan cara memilih opsi 'Tambahkan Konfigurasi Debug' pada menu klik kanan di Penjelajah Solusi.

  2. Dalam dialog Pilih Debugger, pilih opsi konfigurasi debug dari daftar, lalu pilih Pilih:

    Cuplikan layar yang memperlihatkan cara memilih debugger untuk konfigurasi peluncuran di Penjelajah Solusi.

    Jika file launch.vs.json belum ada, Visual Studio akan membuat file. Berikut adalah contoh file yang dibuat untuk hello.exe dapat dieksekusi:

    {
      "version": "0.2.1",
      "defaults": {},
      "configurations": [
        {
          "type": "default",
          "project": "bin\\hello.exe",
          "projectTarget": "",
          "name": "hello.exe"
        }
      ]
    }
    
  3. Setelah Anda memiliki file peluncuran, klik kanan file yang dapat dieksekusi untuk basis kode Anda di Penjelajah Solusi, dan pilih Atur sebagai Item Startup.

    Executable ditetapkan sebagai item startup untuk basis kode Anda, dan Visual Studio mengatur label untuk tombol Mulai penelusuran kesalahan untuk mencerminkan nama executable Anda:

    Cuplikan layar yang memperlihatkan label kustom untuk tindakan Startup di Visual Studio.

    Saat Anda memulai debugger dengan F5, Visual Studio mulai men-debug kode Anda dan berhenti di titik henti yang ditetapkan. Semua jendela debugger yang familier tersedia dan berfungsi.

    Untuk informasi selengkapnya tentang tugas build dan debug kustom di proyek folder terbuka C++, lihat Membuka dukungan Folder untuk sistem build C++ di Visual Studio.

Tentukan argumen untuk penelusuran kesalahan

Anda dapat menentukan argumen baris perintah untuk diteruskan ke debugger dalam file launch.vs.json . Tambahkan argumen dalam array, seperti yang args ditunjukkan dalam contoh berikut:

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "bin\\hello.exe",
      "name": "hello.exe"
    },
    {
      "type": "default",
      "project": "bin\\hello.exe",
      "name": "hello.exe a1",
      "args": [ "a1" ]
    }
  ]
}

Meluncurkan konfigurasi debug

Anda dapat membuat konfigurasi debug sebanyak yang Anda inginkan. Saat Anda menyimpan file peluncuran, nama konfigurasi ditambahkan ke daftar dropdown target debug. Anda dapat memilih target tertentu untuk memulai debugger:

Cuplikan layar yang memperlihatkan konfigurasi yang tersedia di daftar dropdown Target debug di Visual Studio Penjelajah Solusi.

Jika Anda tidak melihat target tambahan pada menu, pilih Tampilkan/Sembunyikan Target Debug dan konfigurasikan target yang terlihat.

Memahami prioritas untuk konfigurasi

Visual Studio memindai dua lokasi untuk item yang ditentukan dalam configurations properti array dalam file launch.vs.json :

  • Folder root (\) untuk basis kode
  • Folder .vs

Jika Anda memiliki file launch.vs.json di kedua lokasi, dan ada konflik dalam definisi untuk konfigurasi, nilai dalam file .vs\launch.vs.json lebih diutamakan.

Gunakan file pengaturan lain

Selain tugas dan meluncurkan file JSON, Visual Studio membaca pengaturan dari file konfigurasi lain yang ditentukan dalam basis kode Anda. Dua file yang umum digunakan termasuk settings.json dan .gitignore.

Tentukan pengaturan kode dengan .vscode\settings.json

Visual Studio membaca pengaturan terbatas dari file bernama settings.json, saat file terletak di folder bernama .vscode.

Fungsionalitas ini disediakan untuk basis kode yang sebelumnya dikembangkan di Visual Studio Code. Saat ini, satu-satunya pengaturan yang dibaca dari file .vscode\settings.json adalah files.exclude. Pengaturan ini digunakan untuk memfilter file secara visual di Penjelajah Solusi dan dari beberapa alat pencarian.

Anda dapat memiliki beberapa file .vscode\settings.json di basis kode Anda. Pengaturan yang dibaca dari file ini diterapkan ke folder induk .vscode dan semua subfoldernya.

Mengonfigurasi file Git dengan .gitignore

Anda dapat menggunakan file .gitignore untuk memberi tahu Git file mana yang akan diabaikan saat menerapkan kontrol sumber. File .gitignore umumnya disertakan sebagai bagian dari basis kode sehingga pengaturan dapat dibagikan dengan semua pengembang basis kode. Visual Studio membaca pola dalam file .gitignore untuk memfilter item secara visual dan dari beberapa alat pencarian.

Pengaturan yang dibaca dari file .gitignore diterapkan ke folder induknya dan semua subfolder.