Toolset MSBuild (ToolsVersion)
Set alat MSBuild menyertakan file microsoft.common.tasks , file microsoft.common.targets , dan kompilator seperti csc.exe dan vbc.exe. Sebagian besar toolset dapat digunakan untuk mengkompilasi aplikasi ke lebih dari satu versi .NET Framework dan lebih dari satu platform sistem. Namun, Toolset MSBuild 2.0 hanya dapat digunakan untuk menargetkan .NET Framework 2.0.
Atribut MSBuild ToolsVersion
pada elemen Project di file proyek Visual Studio dan MSBuild dianggap usang di Visual Studio 2019 dan yang lebih baru; Anda dapat menghapusnya dengan aman. Artikel ini menjelaskan penggunaannya dalam versi MSBuild yang lebih lama, atau untuk toolset kustom. Lihat Konfigurasi Toolset standar dan kustom.
Atribut ToolsVersion
Tentukan Toolset dalam atribut ToolsVersion
pada elemen Proyek dalam file proyek. Contoh berikut menentukan bahwa proyek akan dibangun dengan menggunakan Toolset "Current" MSBuild.
<Project ToolsVersion="Current" ... </Project>
Catatan
Beberapa jenis proyek menggunakan atribut sdk
alih-alih ToolsVersion
. Untuk informasi selengkapnya, lihat Penambahan format csproj untuk .NET Core.
Cara kerja atribut ToolsVersion
Saat Anda membuat proyek di Visual Studio, atau meningkatkan proyek yang ada, atribut bernama ToolsVersion
otomatis disertakan dalam file proyek dan nilainya sesuai dengan versi MSBuild yang disertakan dalam edisi Visual Studio. Untuk informasi selengkapnya, lihat Gambaran umum penargetan kerangka kerja.
Jika nilai ToolsVersion
didefinisikan dalam file proyek, MSBuild menggunakan nilai tersebut untuk menentukan nilai properti Toolset yang tersedia untuk proyek. Satu properti Toolset adalah $(MSBuildToolsPath)
, yang menentukan jalur alat .NET Framework. Hanya properti Toolset tersebut (atau $(MSBuildBinPath)
), yang diperlukan.
Mulai Visual Studio 2013, versi Toolset MSBuild sama dengan nomor versi Visual Studio. MSBuild default ke Toolset ini di dalam Visual Studio dan pada baris perintah, terlepas dari versi Toolset yang ditentukan dalam file proyek. Perilaku ini dapat ditimpa dengan menggunakan bendera -ToolsVersion. Untuk informasi selengkapnya, lihat Mengambil alih pengaturan ToolsVersion.
Dalam contoh berikut, MSBuild menemukan file Microsoft.CSharp.targets dengan menggunakan properti cadangan MSBuildToolsPath
.
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Anda dapat mengubah nilai MSBuildToolsPath
dengan menentukan Toolset kustom. Untuk informasi selengkapnya, lihat Konfigurasi Toolset standar dan kustom.
Saat Anda membuat solusi pada baris perintah dan menentukan ToolsVersion
untuk msbuild.exe, semua proyek dan dependensi proyek-ke-proyeknya dibangun sesuai dengan ToolsVersion
tersebut, meskipun setiap proyek di solusinya menentukan ToolsVersion
-nya sendiri. Untuk menentukan nilai ToolsVersion
per proyek, lihat Mengambil alih pengaturan ToolsVersion.
Atribut ToolsVersion
juga digunakan untuk migrasi proyek. Misalnya, jika Anda membuka proyek Visual Studio 2008 di Visual Studio 2010, file proyek diperbarui untuk menyertakan ToolsVersion="4.0". Jika Anda kemudian mencoba membuka proyek itu di Visual Studio 2008, ToolsVersion
yang ditingkatkan tidak akan dikenali dan karenanya membangun proyek seolah-olah atributnya masih diatur ke 3.5.
Visual Studio 2010 dan Visual Studio 2012 menggunakan ToolsVersion 4.0. Visual Studio 2013 menggunakan ToolsVersion 12.0. Visual Studio 2015 menggunakan ToolsVersion 14.0, dan Visual Studio 2017 menggunakan ToolsVersion 15.0. Dalam banyak kasus, Anda dapat membuka proyek di beberapa versi Visual Studio tanpa modifikasi. Visual Studio selalu menggunakan Toolset yang benar, tetapi Anda akan diberi tahu jika versi yang digunakan tidak cocok dengan versi dalam file proyek. Di hampir semua kasus, peringatan ini tidak berbahaya karena Toolset kompatibel dalam banyak kasus.
Sub-toolset, yang dijelaskan nanti dalam topik ini, memungkinkan MSBuild untuk otomatis mengalihkan kumpulan alat yang akan digunakan berdasarkan konteks tempat build dijalankan. Misalnya, MSBuild menggunakan seperangkat alat yang lebih baru saat dijalankan di Visual Studio 2012 daripada saat dijalankan di Visual Studio 2010, tanpa Anda harus mengubah file proyek secara eksplisit.
Penerapan Toolset
Terapkan Toolset dengan memilih jalur berbagai alat, target, dan tugas yang membentuk Toolset. Alat dalam Toolset yang ditentukan MSBuild berasal dari sumber berikut:
Folder .NET Framework.
Alat terkelola tambahan.
Alat terkelola tersebut mencakup ResGen.exe dan TlbImp.exe.
MSBuild menyediakan dua cara untuk mengakses Toolset:
Dengan menggunakan properti Toolset
Dengan menggunakan metode ToolLocationHelper
Properti Toolset menentukan jalur alat. Mulai Visual Studio 2017, MSBuild tidak lagi memiliki lokasi tetap. Secara default, ini terletak di folder MSBuild\15.0\Bin relatif terhadap lokasi penginstalan Visual Studio. Dalam versi sebelumnya, MSBuild menggunakan nilai atribut ToolsVersion
dalam file proyek untuk menemukan kunci registri yang sesuai, lalu menggunakan informasi dalam kunci registri tersebut untuk menetapkan properti Toolset. Misalnya, jika ToolsVersion
memiliki nilai 12.0
, maka MSBuild menetapkan properti Toolset sesuai dengan kunci registri ini: HKLM\Software\Microsoft\MSBuild\ToolsVersions\12.0.
Berikut adalah properti Toolset:
MSBuildToolsPath
menentukan jalur biner MSBuild.SDK40ToolsPath
menentukan jalur alat terkelola tambahan untuk MSBuild 4.x (bisa jadi 4.0 atau 4.5).SDK35ToolsPath
menentukan jalur alat terkelola tambahan untuk MSBuild 3.5.
Sebagai alternatif, Anda dapat menentukan Toolset secara terprogram dengan memanggil metode kelas ToolLocationHelper. Kelas ini mencakup metode berikut:
GetPathToDotNetFramework mengembalikan jalur folder .NET Framework.
GetPathToDotNetFrameworkFile mengembalikan jalur file di folder .NET Framework.
GetPathToDotNetFrameworkSdk mengembalikan jalur folder alat terkelola.
GetPathToDotNetFrameworkSdkFile mengembalikan jalur file, yang biasanya terletak di folder alat terkelola.
GetPathToBuildTools mengembalikan jalur alat build.