MSBuild Araç Takımı (ToolsVersion)

MSBuild araç takımı bir microsoft.common.tasks dosyası, microsoft.common.targets dosyası ve csc.exe ve vbc.exe gibi derleyiciler içerir. Çoğu araç takımı, .NET Framework'ün birden fazla sürümüne ve birden fazla sistem platformuna uygulama derlemek için kullanılabilir. Ancak, MSBuild 2.0 Araç Takımı yalnızca .NET Framework 2.0'ı hedeflemek için kullanılabilir.

Visual Studio ve MSBuild ToolsVersion proje dosyalarındaki Project öğesindeki MSBuild özniteliği, Visual Studio 2019 ve sonraki sürümlerde kullanım dışı olarak kabul edilir; bunu güvenle silebilirsiniz. Bu makalede, MSBuild'in eski sürümlerinde veya özel araç kümelerinde kullanımı açıklanmaktadır. Bkz. Standart ve özel Araç Takımı yapılandırmaları.

ToolsVersion özniteliği

Proje dosyasındaki ToolsVersion Project öğesindeki özniteliğinde Araç Takımı'nı belirtin. Aşağıdaki örnek, projenin MSBuild "Geçerli" Araç Takımı kullanılarak derlenmesi gerektiğini belirtir.

<Project ToolsVersion="Current" ... </Project>

Dekont

Bazı proje türleri yerine ToolsVersionözniteliğini sdk kullanır. Daha fazla bilgi için bkz . .NET Core için csproj biçimine eklemeler.

ToolsVersion özniteliği nasıl çalışır?

Visual Studio'da bir proje oluşturduğunuzda veya var olan bir projeyi yükselttiğinizde, adlı ToolsVersion bir öznitelik proje dosyasına otomatik olarak eklenir ve değeri Visual Studio sürümündeki MSBuild sürümüne karşılık gelir. Daha fazla bilgi için bkz . Çerçeve hedeflemeye genel bakış.

Bir proje dosyasında bir ToolsVersion değer tanımlandığında, MSBuild bu değeri kullanarak proje için kullanılabilen Araç Kümesi özelliklerinin değerlerini belirler. Bir Araç Takımı özelliği, .NET Framework araçlarının yolunu belirten özelliğidir $(MSBuildToolsPath). Yalnızca araç kümesi özelliği (veya $(MSBuildBinPath)) gereklidir.

Visual Studio 2013'den başlayarak, MSBuild Araç Takımı sürümü Visual Studio sürüm numarasıyla aynıdır. MSBuild, proje dosyasında belirtilen Araç Kümesi sürümünden bağımsız olarak Visual Studio'da ve komut satırında varsayılan olarak bu Araç Takımı'nı kullanır. Bu davranış , -ToolsVersion bayrağı kullanılarak geçersiz kılınabilir. Daha fazla bilgi için bkz . ToolsVersion ayarlarını geçersiz kılma.

Aşağıdaki örnekte, MSBuild ayrılmış özelliğini kullanarak MSBuildToolsPath Microsoft.CSharp.targets dosyasını bulur.

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

Değerini MSBuildToolsPath , özel bir Araç Takımı tanımlayarak değiştirebilirsiniz. Daha fazla bilgi için bkz . Standart ve özel Araç Takımı yapılandırmaları.

Komut satırında bir çözüm oluşturduğunuzda ve msbuild.exe için bir ToolsVersion belirttiğinizde, çözümdeki her proje kendi ToolsVersionprojesini belirtse bile tüm projeler ve projeden projeye bağımlılıkları buna ToolsVersiongöre oluşturulur. Değeri proje bazında ToolsVersion tanımlamak için bkz . ToolsVersion ayarlarını geçersiz kılma.

ToolsVersion Özniteliği, proje geçişi için de kullanılır. Örneğin, Visual Studio 2008 projesini Visual Studio 2010'da açarsanız, proje dosyası ToolsVersion="4.0" içerecek şekilde güncelleştirilir. Daha sonra bu projeyi Visual Studio 2008'de açmayı denerseniz, yükseltilen ToolsVersion öğeyi tanımaz ve bu nedenle özniteliği hala 3.5 olarak ayarlanmış gibi projeyi oluşturur.

Visual Studio 2010 ve Visual Studio 2012, 4.0 ToolsVersion kullanır. Visual Studio 2013, 12.0 ToolsVersion kullanır. Visual Studio 2015, ToolsVersion 14.0'ı, Visual Studio 2017 ise ToolsVersion 15.0'ı kullanır. Çoğu durumda, projeyi değiştirmeden Visual Studio'nun birden çok sürümünde açabilirsiniz. Visual Studio her zaman doğru Araç Takımı'nı kullanır, ancak kullanılan sürüm proje dosyasındaki sürümle eşleşmiyorsa size bildirilir. Araç Kümeleri çoğu durumda uyumlu olduğundan, hemen her durumda bu uyarı zararsızdır.

Bu konunun ilerleyen bölümlerinde açıklanan alt araç kümeleri, MSBuild'in derlemenin çalıştırıldığı bağlama göre kullanılacak araç kümesini otomatik olarak değiştirmesine olanak sağlar. Örneğin, MSBuild, Visual Studio 2012'de çalıştırıldığında, proje dosyasını açıkça değiştirmek zorunda kalmadan Visual Studio 2010'da çalıştırıldığından daha yeni bir araç kümesi kullanır.

Araç takımı uygulaması

Araç Takımı'nı oluşturan çeşitli araçların, hedeflerin ve görevlerin yollarını seçerek bir Araç Takımı uygulayın. ARAÇ KÜMESI'ndeki MSBuild'in tanımladığı araçlar aşağıdaki kaynaklardan gelir:

  • .NET Framework klasörü.

  • Ek yönetilen araçlar.

    Yönetilen araçlar ResGen.exe ve TlbImp.exe'yi içerir.

MSBuild, Araç Takımı'na erişmek için iki yol sağlar:

Araç takımı özellikleri, araçların yollarını belirtir. Visual Studio 2017'den başlayarak, MSBuild'in artık sabit bir konumu yoktur. Varsayılan olarak, Visual Studio yükleme konumuna göre MSBuild\15.0\Bin klasöründe bulunur. Önceki sürümlerde, MSBuild ilgili kayıt defteri anahtarını bulmak için proje dosyasında özniteliğinin ToolsVersion değerini kullanır ve ardından Araç Kümesi özelliklerini ayarlamak için kayıt defteri anahtarındaki bilgileri kullanır. Örneğin, değerine sahipseToolsVersion, MSBuild Araç Kümesi özelliklerini şu kayıt defteri anahtarına göre ayarlar: HKLM\Software\Microsoft\MSBuild\ToolsVersions\12.0.12.0

Araç Kümesi özellikleri şunlardır:

  • MSBuildToolsPath MSBuild ikili dosyalarının yolunu belirtir.

  • SDK40ToolsPath MSBuild 4.x (4.0 veya 4.5 olabilir) için ek yönetilen araçların yolunu belirtir.

  • SDK35ToolsPath MSBuild 3.5 için ek yönetilen araçların yolunu belirtir.

Alternatif olarak, sınıfının yöntemlerini ToolLocationHelper çağırarak Araç Takımı'nı program aracılığıyla belirleyebilirsiniz. sınıfı şu yöntemleri içerir: