Override delle impostazioni ToolsVersion
È possibile selezionare il set di strumenti per un file di progetto utilizzando l'opzione di /ToolsVersion (o /tv, in breve) o impostando la proprietà di $(ProjectToolsVersion).Ciò consente di compilare un progetto in una soluzione con una versione del set di strumenti diversa da quella degli altri progetti.È inoltre possibile eseguire l'override della versione dello strumento utilizzato da un attività MSBuild impostando il parametro di attività di ToolsVersion.
Override delle impostazioni ToolsVersion di progetti da riga di comando
Anche se i progetti di Visual Studio la compilazione con il valore ToolsVersion specificato nel file di progetto, è in genere possibile utilizzare l'opzione di /ToolsVersiono, /tv) nella riga di comando per eseguire l'override del valore e compilare tutti i progetti e le dipendenze tra progetti con set di strumenti diversi.Ad esempio:
msbuild.exe someproj.proj /tv:3.5 /p:Configuration=Debug
Nell'esempio seguente tutti i progetti vengono compilati utilizzando ToolsVersion 3.5Vedere la sezione "Ordine di precedenza" più avanti in questo argomento.
Quando si utilizza l'opzione /tv della riga di comando, è possibile utilizzare facoltativamente la proprietà $(ProjectToolsVersion) nei progetti singoli per compilarli con un valore ToolsVersion diverso dagli altri progetti della soluzione.
Override delle impostazioni ToolsVersion utilizzando il parametro ToolsVersion dell'attività MSBuild.
L'attività MSBuild è il mezzo principale perché un progetto ne compili un altro.Per consentire all'attività MSBuild di compilare un progetto con un ToolsVersion diverso da quello specificato nel progetto, è disponibile un parametro dell'attività facoltativo denominato ToolsVersion.Nell'esempio seguente viene illustrato come utilizzare questo parametro:
Creare un file denominato projectA.proj e contenente il codice seguente:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.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>
Creare un altro file denominato projectB.proj e contenente il codice seguente:
<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <Target Name="go"> <Message Text="projectB.proj" /> <Message Text="MSBuildToolsVersion: $(MSBuildToolsVersion)" /> <Message Text="MSBuildToolsPath: $(MSBuildToolsPath)" /> </Target> </Project>
Il comando seguente a un prompt dei comandi:
msbuild projectA.proj /t:go /toolsversion:3.5
Nell'output viene visualizzato.Per projectA, /toolsversion:3.5 che imposta la riga di comando esegue l'override di ToolsVersion=4.0 che imposta nel tag di Project.
ProjectB viene chiamato da un'attività in projectA.L'attività ha ToolsVersion=2.0, che esegue l'override delle impostazioni di ToolsVersion per 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
Ordine di precedenza
L'ordine di precedenza, dalla più alta alla più bassa, utilizzato per determinare ToolsVersion utilizzato da un progetto compilato è:
L'attributo di ToolsVersion l'attività MSBuild utilizzato per compilare il progetto, se disponibile.
L'opzione /tvo di /toolsversion ) utilizzata nel comando di msbuild.exe, se disponibile.
L'attributo di ToolsVersion di elemento di Progetto del file di progetto.
La versione predefinita degli strumenti nel file MSBuild.exe.config.
La versione predefinita degli strumenti nel Registro di sistema.Per ulteriori informazioni, vedere Configurazioni standard e personalizzate del set di strumenti.
I numeri 1, 2 e 3 corrispondono alle proprietà:
L'attributo delle proprietà sull'attività MSBuild
L'opzione /p: di msbuild.exe
Il tag della proprietà nel file di progetto
Vedere anche
Concetti
Set di strumenti di MSBuild (ToolsVersion)
Configurazioni standard e personalizzate del set di strumenti