MSBuild Araç Takımı (ToolsVersion)

MSBuild uygulama oluşturmak için görev, hedef ve araç araç takımını kullanır. Genellikle, MSBuild Araç Kümesi bir microsoft.common.tasks dosyası, bir microsoft.common.targets dosyası ve csc.exe ve vbc.exegibi derleyiciler içerir. Çoğu Araç Takımı, uygulamaları .NET Framework birden fazla sürümüne ve birden fazla sistem platformuna derlemek için kullanılabilir. Ancak MSBuild 2.0 Araç Takımı yalnızca .NET Framework 2.0'ı hedeflemek için kullanılabilir.

ToolsVersion özniteliği

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

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

Not

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

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

Visual Studio 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ünde bulunan MSBuild sürümüne karşılık gelir. Daha fazla bilgi için bkz. Çerçeve hedeflemeye genel bakış.

Proje dosyasında bir ToolsVersion değer tanımlandığında, MSBuild bu değeri kullanarak proje için kullanılabilen Araç Takımı ö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ç Takımı sürümüne bakılmaksızın, Visual Studio içinde ve komut satırında varsayılan olarak bu Araç Takımı'nı kullanır. -ToolsVersion bayrağı kullanılarak bu davranış 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 MSBuildToolsPathMicrosoft.CSharp.targets dosyasını bulur.

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

Özel bir Araç Takımı tanımlayarak değerini MSBuildToolsPath 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 vemsbuild.exeiçin bir ToolsVersion belirttiğinizde, çözümdeki her proje kendi ToolsVersionöğesini 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, bir 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 öznitelik 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'de ToolsVersion 14.0, Visual Studio 2017'de ise ToolsVersion 15.0 kullanılır. Çoğu durumda, projeyi Visual Studio'nin birden çok sürümünde değişiklik yapmadan 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 hemen tüm durumlarda bu uyarı zararsızdır.

Bu konunun ilerleyen bölümlerinde açıklanan alt araç kümeleri, MSBuild 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ç Takımı'nda MSBuild 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.exeiç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 itibaren MSBuild 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ğeri varsaToolsVersion, MSBuild Araç Takımı özelliklerini şu kayıt defteri anahtarına göre ayarlar: HKLM\Software\Microsoft\MSBuild\ToolsVersions\12.0.12.0

Araç Takımı özellikleri şunlardır:

  • MSBuildToolsPathMSBuild ikili dosyalarının yolunu belirtir.

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

  • SDK35ToolsPathMSBuild 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:

Alt araç kümeleri

15.0'den önceki MSBuild sürümler için MSBuild, temel araçların yolunu belirtmek için bir kayıt defteri anahtarı kullanır. Anahtarın alt anahtarı varsa, MSBuild bunu kullanarak ek araçlar içeren bir alt araç takımının yolunu belirtir. Bu durumda, Araç Takımı her iki anahtarda da tanımlanan özellik tanımları birleştirilerek tanımlanır.

Not

Araç Kümesi özellik adları çakıyorsa, alt anahtar yolu için tanımlanan değer kök anahtar yolu için tanımlanan değeri geçersiz kılar.

Alt araç kümeleri, derleme özelliğinin VisualStudioVersion varlığında etkin hale gelir. Bu özellik şu değerlerden birini alabilir:

  • "10.0" .NET Framework 4 alt araç takımını belirtir

  • "11.0" .NET Framework 4.5 alt araç takımını belirtir

  • "12.0" .NET Framework 4.5.1 alt araç takımını belirtir

ToolsVersion 4.0 ile 10.0 ve 11.0 alt araç kümeleri kullanılmalıdır. Sonraki sürümlerde alt araç takımı sürümü ve ToolsVersion eşleşmelidir.

Derleme sırasında, MSBuild önceden tanımlanmamışsa özelliği için VisualStudioVersion varsayılan değeri otomatik olarak belirler ve ayarlar.

MSBuild, parametre olarak numaralandırılmış değer ekleyen VisualStudioVersion yöntemler için ToolLocationHelper aşırı yüklemeler sağlar

Alt araç kümeleri .NET Framework 4.5'te tanıtıldı.

Ayrıca bkz.