Aracılığıyla paylaş


ToolsVersion ayarlarını geçersiz kılma

ToolsVersion Visual Studio ve MSBuild proje dosyalarındaki Project öğesindeki ö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ı.

Projeler ve çözümler için araç takımını üç yoldan biriyle değiştirebilirsiniz:

  1. Projeyi veya çözümü komut satırından -ToolsVersion oluştururken anahtarı (veya -tvkısaca ) kullanarak.

  2. MSBuild görevinde parametresini ayarlayarak ToolsVersion .

  3. Bir çözüm içindeki $(ProjectToolsVersion) bir projede özelliğini ayarlayarak. Bu, diğer projelerden farklı bir Araç Takımı sürümüne sahip bir çözümde proje oluşturmanıza olanak tanır.

Komut satırı derlemelerinde projelerin ve çözümlerin ToolsVersion ayarlarını geçersiz kılma

Visual Studio projeleri genellikle proje dosyasında belirtilen ToolsVersion ile derlense de, bu değeri geçersiz kılmak ve tüm projeleri ve projeden projeye bağımlılıklarını farklı bir Araç Takımı ile oluşturmak için komut satırındaki (veya -tv) anahtarını kullanabilirsiniz -ToolsVersion . Ö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, bölümüne bakınBu konunun devamında öncelik sırası.)

Komut satırında anahtarı kullanırken -tv , isteğe bağlı olarak tek tek projelerde özelliğini kullanarak $(ProjectToolsVersion) bunları çö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ı için birincil araçlardır. MSBuild görevinin projede belirtilenden farklı bir ToolsVersion ile proje oluşturmasını sağlamak için adlı ToolsVersionisteğe bağlı bir görev parametresi sağlar. Aşağıdaki örnekte bu parametrenin nasıl kullanılacağı gösterilmektedir:

  1. projectA.proj adlı ve aşağıdaki kodu içeren bir dosya oluşturun:

    <Project xmlns="http://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 adlı ve aşağıdaki kodu içeren başka bir dosya oluşturun:

    <Project xmlns="http://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 çıkış görüntülenir. için projectA, -toolsversion:3.5 komut satırındaki ayar etiketindeki ToolsVersion=12.0Project ayarı geçersiz kılar.

    ProjectB içindeki bir görev tarafından çağrılır projectA. Bu görev, için projectBdiğer ToolsVersion ayarları geçersiz kılan öğesine sahiptirToolsVersion=2.0.

    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ı

Öncelik sırası, en yüksekten en düşüke, belirlemek ToolsVersion için kullanılır:

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

  2. -toolsversion Varsa, msbuild.exe komutunda kullanılan (veya -tv) anahtarı.

  3. Ortam değişkeni MSBUILDTREATALLTOOLSVERSIONSASCURRENT ayarlandıysa geçerli ToolsVersionkullanın.

  4. Ortam değişkeni MSBUILDTREATHIGHERTOOLSVERSIONASCURRENT ayarlanırsa ve ToolsVersion proje dosyasında tanımlanan geçerli değerinden ToolsVersionbüyükse geçerli ToolsVersiondeğerini kullanın.

  5. Ortam değişkeni MSBUILDLEGACYDEFAULTTOOLSVERSION ayarlandıysa veya ayarlanmadıysa ToolsVersion aşağıdaki adımlar kullanılır:

    1. Proje ToolsVersion dosyasının Project öğesinin özniteliği. Bu öznitelik yoksa, 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 ayarlanmadıysa aşağıdaki adımlar kullanılır:

    1. Ortam değişkeni MSBUILDDEFAULTTOOLSVERSION var olan bir ToolsVersion değerine ayarlanmışsa, bunu kullanın.

    2. MSBuild.exe.config içinde ayarlandıysa DefaultOverrideToolsVersion kullanın.

    3. Kayıt defterinde ayarlandıysa DefaultOverrideToolsVersion , bunu kullanın.

    4. Aksi takdirde geçerli ToolsVersionkullanın.