Bagikan melalui


Filter solusi di MSBuild

File filter solusi adalah file JSON dengan ekstensi .slnf yang menunjukkan proyek mana yang akan dibangun atau dimuat dari semua proyek dalam solusi. Dimulai dengan MSBuild 16.7, Anda dapat memanggil MSBuild pada file filter solusi untuk membangun solusi dengan pemfilteran diaktifkan.

Nota

File filter solusi mengurangi serangkaian proyek yang dimuat atau dibangun dan menyederhanakan format. File solusi masih diperlukan.

Membangun filter solusi dari baris perintah

Membangun file filter solusi dari baris perintah menggunakan sintaks yang sama persis dengan membangun file solusi. Tentukan file filter solusi alih-alih solusi yang akan dibuat dengan pemfilteran diaktifkan, sebagai berikut:

msbuild [options] solutionFilterFile.slnf

Anda juga dapat menambahkan sakelar dan properti tambahan seperti biasa. Lihat referensi baris perintah MSBuild. Perintah ini membangun proyek yang difilter dan proyek apa pun yang bergantung padanya. Saat membangun filter solusi dari baris perintah, MSBuild secara otomatis mengikuti dependensi. Ini membangun proyek jika ditentukan dalam filter atau dirujuk oleh proyek yang dibangun.

File filter solusi

Anda dapat menggunakan Visual Studio untuk bekerja dengan file filter solusi. Membuka filter solusi di Visual Studio menampilkan proyek yang tidak dimuat serta proyek yang dimuat dan memberi Anda opsi untuk memuat lebih banyak proyek untuk memilihnya untuk membangun. Anda dapat memuat semua proyek yang bergantung pada proyek atau proyek awal untuk dibangun juga, tetapi tidak diperlukan. Lihat solusi Difilter.

Filter solusi tidak harus berada di folder yang sama dengan solusi. Jalur ke file solusi relatif terhadap lokasi file filter solusi, tetapi jalur ke setiap proyek relatif terhadap file solusi itu sendiri dan harus cocok dengan jalur proyek dalam file solusi. Contoh berikut menunjukkan penggunaan jalur relatif:

{
  "solution": {
    "path": "..\\..\\Documents\\GitHub\\msbuild\\MSBuild.sln",
    "projects": [
      "src\\Build.OM.UnitTests\\Microsoft.Build.Engine.OM.UnitTests.csproj"
    ]
  }
}

Garis miring terbalik di jalur harus digandakan, karena mereka lolos.

Nota

Dalam kasus di mana Anda menggunakan format file solusi .slnx, didukung di MSBuild 17.12 dan yang lebih baru, file .slnx lebih diprioritaskan daripada file .slnf.

Contoh

Berikut adalah contoh solusi yang difilter di Visual Studio:

Cuplikan layar solusi yang difilter di Visual Studio

Dalam solusi ini, ClassLibrary1 digunakan oleh ProjectA dan ProjectB sehingga ClassLibrary1 terdaftar sebagai referensi proyek.

Berikut adalah file filter solusi yang dihasilkan Visual Studio:

{
  "solution": {
    "path": "MyApplication.sln",
    "projects": [
      "MyApplication\\MyApplication.csproj",
      "ProjectA\\ProjectA.csproj"
    ]
  }
}

Dalam contoh ini, saat Anda membuat dengan pemfilteran diaktifkan (dengan menggunakan perintah MSBuild [options] MyFilter.slnf), MSBuild membangun MyApplication dan ProjectA karena secara eksplisit tercantum dalam file filter solusi. Sebagai bagian dari membangun ProjectA, MSBuild membangun ClassLibrary1 karena ProjectA bergantung padanya. ProjectB tidak dibangun. (Diskusi ini mengasumsikan build yang bersih. Jika proyek dibangun sebelumnya, aturan biasa berlaku untuk melewati proyek yang sudah up-to-date.)

Lihat juga

  • solusi Difilter
  • referensi baris perintah MSBuild