Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Atrybut ToolsVersion elementu Project w plikach projektów visual Studio i MSBuild jest uważany za przestarzały w programie Visual Studio 2019 lub nowszym. Można go bezpiecznie usunąć. W tym artykule opisano jego użycie w starszych wersjach programu MSBuild lub w przypadku niestandardowych zestawów narzędzi. Zobacz Standardowe i niestandardowe konfiguracje zestawu narzędzi.
Zestaw narzędzi dla projektów i rozwiązań można zmienić na jeden z trzech sposobów:
Za pomocą przełącznika
-ToolsVersion(lub-tv, w skrócie) podczas kompilowanie projektu lub rozwiązania z poziomu wiersza polecenia.Ustawiając
ToolsVersionparametr w zadaniu MSBuild.Ustawiając
$(ProjectToolsVersion)właściwość w projekcie w ramach rozwiązania. Dzięki temu można utworzyć projekt w rozwiązaniu z wersją zestawu narzędzi, która różni się od innych projektów.
Zastąp ustawienia NarzędziaWersja projektów i rozwiązań w kompilacjach wiersza polecenia
Mimo że projekty programu Visual Studio zwykle kompilują się przy użyciu elementu ToolsVersion określonego w pliku projektu, można użyć -ToolsVersion przełącznika (lub -tv) w wierszu polecenia, aby zastąpić te wartości i skompilować wszystkie projekty i ich zależności między projektami 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 wersji ToolsVersion 12.0. (Zobacz jednak sekcję Kolejność pierwszeństwa w dalszej części tego tematu).
W przypadku korzystania z przełącznika -tv w wierszu polecenia możesz opcjonalnie użyć $(ProjectToolsVersion) właściwości w poszczególnych projektach, aby skompilować je z inną wartością ToolsVersion niż inne projekty w rozwiązaniu.
Zastąpij ustawienia NarzędziaWersja przy użyciu parametru ToolsVersion zadania MSBuild
Zadanie MSBuild jest podstawowym sposobem kompilowania jednego projektu. Aby umożliwić programowi MSBuild skompilowanie projektu przy użyciu innego parametru ToolsVersion niż określony w projekcie, udostępnia opcjonalny parametr zadania o nazwie ToolsVersion. W poniższym przykładzie pokazano, jak używać tego parametru:
Utwórz plik o nazwie projectA.proj zawierający następujący kod:
<Project> <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 zawierający następujący kod:
<Project> <Target Name="go"> <Message Text="projectB.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> </Target> </Project>Wprowadź następujące polecenie w wierszu polecenia:
msbuild projectA.proj -t:go -toolsversion:3.5Zostanie wyświetlone następujące dane wyjściowe. W przypadku
projectAelementu-toolsversion:3.5ustawienie w wierszu polecenia zastępujeToolsVersion=12.0ustawienie w taguProject.ProjectBelement jest wywoływany przez zadanie w plikuprojectA. To zadanie maToolsVersion=2.0wartość , która zastępuje inneToolsVersionustawienia elementuprojectB.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
Kolejność pierwszeństwa
Kolejność pierwszeństwa, od najwyższego do najniższego, używana do określenia wartości ToolsVersion to:
Atrybut
ToolsVersionw zadaniu MSBuild używanym do kompilowania projektu, jeśli istnieje.Przełącznik
-toolsversion(lub-tv) używany w poleceniu msbuild.exe, jeśli istnieje.Jeśli zmienna środowiskowa
MSBUILDTREATALLTOOLSVERSIONSASCURRENTjest ustawiona, użyj bieżącejToolsVersionzmiennej .Jeśli zmienna środowiskowa
MSBUILDTREATHIGHERTOOLSVERSIONASCURRENTjest ustawiona iToolsVersionzdefiniowana w pliku projektu jest większa niż bieżącaToolsVersion, użyj bieżącegoToolsVersion.Jeśli zmienna środowiskowa
MSBUILDLEGACYDEFAULTTOOLSVERSIONjest ustawiona lub jeśliToolsVersionnie jest ustawiona, zostaną użyte następujące kroki:Atrybut
ToolsVersionelementu Project pliku projektu. Jeśli ten atrybut nie istnieje, przyjmuje 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 Standardowe i niestandardowe konfiguracje zestawu narzędzi.
Jeśli zmienna środowiskowa
MSBUILDLEGACYDEFAULTTOOLSVERSIONnie jest ustawiona, zostaną użyte następujące kroki:Jeśli zmienna środowiskowa
MSBUILDDEFAULTTOOLSVERSIONjest ustawiona naToolsVersionwartość, która istnieje, użyj jej.Jeśli
DefaultOverrideToolsVersionparametr jest ustawiony w pliku MSBuild.exe.config, użyj go.Jeśli
DefaultOverrideToolsVersionjest ustawiona w rejestrze, użyj go.W przeciwnym razie użyj bieżącego
ToolsVersionelementu .