Zastępowanie ustawień ToolsVersion
Możesz zmienić Zestaw narzędzi dla projektów i rozwiązań na jeden z trzech sposobów:
za pomocą przełącznika /ToolsVersion(lub /tv, w skrócie) podczas budowania projektu lub rozwiązania z wiersza polecenia
przez ustawienie parametru ToolsVersion na zadanie programu MSBuild
przez ustawienie właściwości $(ProjectToolsVersion) dla projektu w ramach rozwiązania.To umożliwia budowanie projektu w ramach rozwiązania z wersją Zestaw narzędzi, który różni się od tego dla innych projektów.
Zastąp ustawienia ToolsVersion projektów i rozwiązania na kompilacji z wiersza polecenia
Chociaż projekty programu Visual Studio zazwyczaj tworzą wersję narzędzi określoną w pliku projektu, można użyć przełącznika /ToolsVersion (lub /tv) w wierszu polecenia, aby zastąpić tę wartość oraz zbudować wszystkie projekty i ich zależności projektu za pomocą innego zestawu narzędzi.Na przykład:
msbuild.exe someproj.proj /tv:12.0 /p:Configuration=Debug
W tym przykładzie wszystkie projekty są kompilowane przy użyciu narzędzi w wersji 12.0. (Jednak, zobacz sekcję „Kolejność pierwszeństwa” w dalszej części tego tematu).
W przypadku korzystania z przełączania /tv w wierszu polecenia, można opcjonalnie używać właściwości $(ProjectToolsVersion) w poszczególnych projektach, aby budować je z inną wartością ToolsVersion niż inne projekty w rozwiązaniu.
Zastąp ustawienia ToolsVersion przy użyciu parametru ToolsVersion zadania MSBuild
Zadanie MSBuild to podstawowy sposób na skompilowanie przez jeden projekt innego projektu.Aby włączyć zadanie MSBuild w celu konstruowania projektu z innym ToolsVersion niż określono w projekcie, zapewnia parametr opcjonalny o nazwie ToolsVersion.Poniższy przykład kodu demonstruje, jak używać tego parametru:
Utwórz plik o nazwie projectA.proj i zawierający poniższy kod:
<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>
Utwórz inny plik o nazwie projectB.proj i zawierający poniższy kod:
<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>
W wierszu polecenia wpisz następujące polecenie:
msbuild projectA.proj /t:go /toolsversion:3.5
Pojawią się następujące dane wyjściowe.Dla projektu projectA ustawienie /toolsversion:3.5 w wierszu polecenia zastępuje ustawienie ToolsVersion=12.0 w znaczniku Project.
Obiekt ProjectB jest wywoływany przez zadania w obiekcie projectA.To zadanie ma ToolsVersion=2.0, który zastępuje inne ustawienia ToolsVersion dla projectB.
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
Hierarchia ważności
Hierarchia ważności, od najwyższego do najniższego, używana do określenia ToolsVersion to:
Atrybut ToolsVersion zadana programu MSBuild służącego do konstruowania projektu, jeśli istnieje.
Przełącznik /toolsversion (lub /tv), który jest używany w poleceniu msbuild.exe, jeśli istnieje.
Jeśli zmienna środowiskowa MSBUILDTREATALLTOOLSVERSIONSASCURRENT jest ustawiona, użyj bieżącego obiektu ToolsVersion.
Jeśli zmienna środowiskowa MSBUILDTREATHIGHERTOOLSVERSIONASCURRENT jest ustawiona, a obiekt ToolsVersion zdefiniowany w pliku projektu jest większy niż bieżąca wartość ToolsVersion, użyj bieżącego obiektu ToolsVersion.
Jeśli zmienna środowiskowa MSBUILDLEGACYDEFAULTTOOLSVERSION jest ustawiona lub jeśli obiekt ToolsVersion nie jest ustawiony, używane są następujące czynności:
Atrybut ToolsVersion elementu Projekt pliku projektu.Jeśli ten atrybut nie istnieje, to zakłada się, że jest to bieżąca wersja.
Domyślna wersja narzędzi w pliku MSBuild.exe.config.
Domyślna wersja narzędzi w rejestrze.Aby uzyskać więcej informacji, zobacz Konfiguracje standardowego i niestandardowego zestawu narzędzi.
Jeśli zmienna środowiskowa MSBUILDLEGACYDEFAULTTOOLSVERSION nie jest ustawiona, używane są następujące czynności:
Jeśli zmienna środowiskowa MSBUILDDEFAULTTOOLSVERSION jest ustawiona na obiekt ToolsVersion, który istnieje, użyj go.
Jeśli parametr DefaultOverrideToolsVersion ma wartość MSBuild.exe.config, użyj go.
Jeśli parametr DefaultOverrideToolsVersion jest ustawiony w rejestrze, użyj go.
W przeciwnym razie użyj bieżącego obiektu ToolsVersion.
Zobacz też
Koncepcje
Zestaw narzędzi MSBuild (ToolsVersion)
Konfiguracje standardowego i niestandardowego zestawu narzędzi