Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
MSBuild è altamente personalizzabile ed estendibile (vedere Personalizzare la compilazione per i dettagli), quindi prestare particolare attenzione alla configurazione corretta dell'ambiente e della compilazione.
Limitare l'accesso in scrittura al percorso di installazione
Installare MSBuild (sia con Visual Studio, .NET SDK o autonomo) in un percorso in cui solo gli utenti attendibili hanno accesso in scrittura.
È possibile modificare la logica di compilazione modificando o aggiungendo vari file binari e XML posizionati accanto all'eseguibile MSBuild e alle sottocartelle dell'eseguibile MSBuild. Pertanto, solo gli utenti attendibili devono essere autorizzati a scrivere nella cartella .
Configurazioni correlate
-
MSBuildExtensionsPath e MSBuildUserExtensionsPath , specificamente proprietà che possono essere usate per rifiutare esplicitamente
ImportUserLocationsByWildcardBefore{ImportingFileNameWithNoDots}la logica dell'estensione
Eseguire la compilazione solo sulle origini che si conoscono ed esaminate
Eseguire MSBuild (per la compilazione e il ripristino di progetti, ma anche per l'apertura di progetti in Visual Studio) solo su origini attendibili.
La logica di MSBuild può essere estesa all'interno dei file di script di compilazione, inclusi i file di progetto, quindi si presuppone che la logica di compilazione sconosciuta sia in grado di eseguire codice arbitrario nell'ambiente di compilazione.
Configurazioni correlate
Eseguire la compilazione in una posizione verificata e dedicata
MSBuild può includere automaticamente la logica da una cartella del progetto o della soluzione e da qualsiasi cartella padre fino alla radice dell'unità. Sono inclusi .user file, [before|after].{solution}.targets file, Directory.Build.[props|targets|rsp] file e altri.
Assicurarsi che solo gli utenti o gli account autorizzati abbiano accesso in scrittura al percorso con i file correlati alla compilazione e qualsiasi cartella in una struttura gerarchica fino alla radice dell'unità.
Per impedire l'inclusione imprevista di Directory.Build.[props|targets|rsp], è possibile includere tali file nella radice delle origini. Il file può essere un elemento MSBuild Project vuoto.
Configurazioni correlate
Conoscere ed esaminare i pacchetti di riferimento e i feed di origine
La logica di compilazione può essere estesa automaticamente dai pacchetti NuGet. Tale logica viene eseguita al ripristino, che include la logica nell'esecuzione della compilazione o della compilazione. Assicurarsi di avere familiarità con i tipi di asset del pacchetto NuGet e il relativo ruolo durante la compilazione, la compilazione e il runtime. In particolare, gli buildasset , buildTransitivebuildMultitargeting e analyzers vengono collegati automaticamente (e quindi eseguiti automaticamente durante) la compilazione, a meno che non vengano esplicitamente esplicitamente disattivati.
Usare ExcludeAssets ogni volta che non è necessaria la logica di compilazione o estensione del compilatore da un pacchetto a cui si fa riferimento (o ancora meglio, solo in modo esplicito IncludeAssets la logica di compilazione se lo si vuole).
Assicurarsi di avere familiarità con la documentazione e le indicazioni correnti del team NuGet. Fare riferimento al PackageReference documento nei file di progetto come origine autorevole per questo problema.
Configurazioni correlate
Conoscere ed esaminare lo script/processo di avvio della compilazione
La logica di compilazione può essere influenzata da argomenti della riga di comando o variabili di ambiente, in particolare quelli che possono generare l'inserimento di plug-in (ad esempio, logger personalizzati) o la logica di compilazione (ad esempio, script di compilazione in MSBuildUserExtensionsPath). Assicurarsi di conoscere gli argomenti della riga di comando e le variabili di ambiente applicati al processo MSBuild. In questo modo si comprenderà meglio il modo in cui viene influenzata la logica di compilazione.
Usare l'account utente dedicato e la sessione per eseguire la compilazione
Non eseguire con un account che può essere usato in uno stesso sistema per eseguire in precedenza processi o script sconosciuti, inclusa una compilazione diversa. In particolare se la compilazione non correlata con lo stesso account utente potrebbe essere stata eseguita su origini non completamente attendibili e note.
MSBuild può eseguire la logica di origine da diverse posizioni dal profilo utente (in particolare MSBuild SDK include automaticamente la logica di compilazione che si trova nel percorso MSBuildUserExtensionsPath ) o da posizioni iniettabili dalle variabili di ambiente (è possibile personalizzare MSBuildUserExtensionsPath con una proprietà MSBuild con lo stesso nome. Tale proprietà non ha un valore predefinito, quindi può essere originata dalla variabile di ambiente con lo stesso nome.
Annotazioni
Come dettaglio di implementazione, MSBuild individua e comunica con i processi persistenti tramite named pipe e mutex. In Windows, queste named pipe e mutex condividono uno spazio dei nomi a livello di computer. Un processo in un altro account locale può quindi occupare questi nomi e impedire la creazione della compilazione. Questa situazione è un problema di disponibilità (Denial of Service). I controlli di accesso del sistema operativo impediscono comunque a un altro account di leggere o modificare la compilazione. Preferisce un computer in cui tutti gli account locali sono attendibili o una sessione isolata, un contenitore o una macchina virtuale.
Configurazioni correlate
-
MSBuildExtensionsPath e MSBuildUserExtensionsPath: è possibile impostare la
ImportUserLocationsByWildcardBefore{ImportingFileNameWithNoDots}proprietà su perfalserifiutare esplicitamente l'inclusione automatica della logica di compilazione dell'estensione specifica.