ToolsVersion Ayarlarını Geçersiz Kılma

Araç projeleri ve çözümleri üç yoldan biriyle değiştirebilirsiniz:

  1. Komut satırından projeyi veya çözümü oluşturduğunuzda /ToolsVersion anahtarı kullanılarak (veya kısaca /tv)

  2. MSBuild görevlerinde ToolsVersion parametresini ayarlayarak

  3. çözüm dahilindeki projede $(ProjectToolsVersion) özelliğini ayarlayarak.Bu, diğer projelerden farklı bir Araç Kümesi sürümü ile bir çözümde bir proje oluşturmanıza olanak sağlar.

Komut Satırı Derlemelerinde ToolsVersion Proje ve Çözümler Ayarlarını Geçersiz Kılın

Visual Studio projeleri genellikle proje dosyasında belirtilen ToolsVersion ile oluşturulmasına rağmen /ToolsVersion (veya /tv) öğesini kullanarak söz konusu değeri geçersiz kılacak komut satırını çalıştırabilir, projelerin tamamını ve farklı Araç Seti ile projeler arası bağımlılıkları oluşturabilirsiniz.Örne?in:

msbuild.exe someproj.proj /tv:12.0 /p:Configuration=Debug

Bu örnekte, tüm projeler ToolsVersion 12.0 kullanılarak oluşturulur. (Ancak bu konuda ileride bahsedilecek olan "Öncelik Sırası" bölümüne bakın.)

Komut satırında /tv anahtarını kullanırken, isteğe bağlı olarak tek tek projelerde $(ProjectToolsVersion) özelliğini kullanarak bu projeleri çözümdeki diğer projelerden farklı bir ToolsVersion değeriyle oluşturabilirsiniz.

MSBuild Görevinin ToolsVersion Parametresini Kullanarak ToolsVersion Ayarlarını Geçersiz Kılma

MSBuild görevi, bir projenin başka bir proje oluşturmasının birincil yoludur.Projede belirtilenden farklı bir ToolsVersion ile bir proje derlemek üzere MSBuild'i etkinleştirmek için, ToolsVersion adlı isteğe bağlı bir görev parametresi sağlar.Aşağıdaki örnek bu parametrenin nasıl kullanılacağını gösterir:

  1. projectA.proj olarak adlandırılan ve aşağıdaki kodu içeren bir dosya oluşturun:

    <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"
    ToolsVersion="12.0">
    
        <Target Name="go" > 
            <Message Text="projectA.proj" />
            <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" />
            <Message Text="MSBuildToolsPath:    $(MSBuildToolsPath)" />
    
            <MSBuild Projects="projectB.proj"
                ToolsVersion="2.0"
                Targets="go" />
        </Target>
    </Project>
    
  2. projectB.proj olarak adlandırılan ve aşağıdaki kodu içeren başka bir dosya oluşturun:

    <Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003"
    ToolsVersion="12.0">
    
        <Target Name="go">
            <Message Text="projectB.proj" />
            <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" />
            <Message Text="MSBuildToolsPath:    $(MSBuildToolsPath)" />
        </Target>
    </Project>
    
  3. Komut istemine aşağıdaki komutu girin.

    msbuild projectA.proj /t:go /toolsversion:3.5
    
  4. Aşağıdaki çıktı görünür. projectA için komut satırındaki /toolsversion:3.5 ayarı Project etiketindeki ToolsVersion=12.0 ayarını geçersiz kılar.

    ProjectB, projectA içindeki bir görev tarafından çağrılır.Bu görevin, projectB için diğer ToolsVersion ayarlarını geçersiz kılan ToolsVersion=2.0 vardır.

    Output:
      projectA.proj
      MSBuildToolsVersion: 3.5
      MSBuildToolsPath:    C:\Windows\Microsoft.NET\Framework\v3.5
    
      projectB.proj
      MSBuildToolsVersion: 2.0
      MSBuildToolsPath:    C:\Windows\Microsoft.NET\Framework\v2.0.50727
    

Öncelik Sırası

ToolsVersion öğesini belirlemek için kullanılan büyükten küçüğe öncelik sırası:

  1. Varsa, projeyi oluşturmak için kullanılan MSBuild görevindeki ToolsVersion özniteliği.

  2. /toolsversion (veya /tv) varsa, MSBuild.exe komutunda kullanılan anahtar.

  3. Ortam bağımsız değişkeni MSBUILDTREATALLTOOLSVERSIONSASCURRENT ayarlanmışsa, geçerli olan ToolsVersion öğesini kullanın.

  4. Ortam bağımsız değişkeni MSBUILDTREATHIGHERTOOLSVERSIONASCURRENT ayarlanmış ve proje dosyasında tanımlanan ToolsVersion öğesi, geçerli ToolsVersion öğesinden büyükse, geçerli olan ToolsVersion öğesini kullanın.

  5. Ortam bağımsız değişkeni MSBUILDLEGACYDEFAULTTOOLSVERSION ayarlanmış, ancak ToolsVersion ayarlanmamışsa, aşağıdaki adımlar kullanılır:

    1. Proje dosyasının Proje öğesinin ToolsVersion özniteliği.Bu öznitelik mevcut değilse geçerli sürüm olduğu varsayılır.

    2. MSBuild.exe.config dosyasındaki varsayılan araçlar sürümü.

    3. Kayıt defterindeki varsayılan araçlar sürümü.Daha fazla bilgi için bkz. Standart ve Özel Araç Takımı Yapılandırmaları.

  6. Ortam değişkeni MSBUILDLEGACYDEFAULTTOOLSVERSION ayarlanmamışsa, aşağıdaki adımlar kullanılır:

    1. Ortam bağımız değişkeni MSBUILDDEFAULTTOOLSVERSION varolan bir ToolsVersion öğesine ayarlanırsa, bunu kullanın.

    2. DefaultOverrideToolsVersion MSBuild.exe.config olarak ayarlanırsa, bunu kullanın.

    3. DefaultOverrideToolsVersion kayıt defterinde ayarlanırsa, bunu kullanın.

    4. Aksi takdirde, geçerli olan ToolsVersion kullanın.

Ayrıca bkz.

Kavramlar

MSBuild Araç Takımı (ToolsVersion)

Standart ve Özel Araç Takımı Yapılandırmaları

Diğer Kaynaklar

MSBuild Çoklu Sürüm Desteğine Genel Bakış

MSBuild Kavramları