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 ToolsVersion
projesini belirtse bile tüm projeler ve projeden projeye bağımlılıkları buna ToolsVersion
gö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ç Kümesi özelliklerini kullanarak
Yöntemleri kullanarak ToolLocationHelper
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:
GetPathToDotNetFramework .NET Framework klasörünün yolunu döndürür.
GetPathToDotNetFrameworkFile .NET Framework klasöründeki bir dosyanın yolunu döndürür.
GetPathToDotNetFrameworkSdk yönetilen araçlar klasörünün yolunu döndürür.
GetPathToDotNetFrameworkSdkFile genellikle yönetilen araçlar klasöründe bulunan bir dosyanın yolunu döndürür.
GetPathToBuildTools , derleme araçlarının yolunu döndürür.