Leggere in inglese

Condividi tramite


Filtri della soluzione in MSBuild

I file di filtro della soluzione sono file JSON con estensione slnf che indicano i progetti da compilare o caricare da tutti i progetti in una soluzione. A partire da MSBuild 16.7, è possibile richiamare MSBuild nel file di filtro della soluzione per compilare la soluzione con il filtro abilitato.

Nota

Il file di filtro della soluzione riduce il set di progetti che verranno caricati o compilati e semplifica il formato. Il file della soluzione è ancora obbligatorio.

Creare un filtro di soluzione dalla riga di comando

La compilazione di un file di filtro della soluzione dalla riga di comando usa esattamente la stessa sintassi della compilazione di un file di soluzione. Specificare il file di filtro della soluzione anziché la soluzione da compilare con il filtro abilitato, come indicato di seguito:

msbuild [options] solutionFilterFile.slnf

È anche possibile aggiungere opzioni e proprietà aggiuntive come di consueto. Vedere Le informazioni di riferimento sulla riga di comando di MSBuild. Questo comando compila i progetti filtrati e i progetti da cui dipendono. Quando si compila un filtro di soluzione dalla riga di comando, MSBuild segue automaticamente le dipendenze. Compila un progetto se è specificato nel filtro o a cui fa riferimento un progetto compilato.

File di filtro della soluzione

È possibile usare Visual Studio per usare i file di filtro della soluzione. L'apertura di un filtro di soluzione in Visual Studio visualizza i progetti scaricati e i progetti caricati e consente di caricare altri progetti per selezionarli per la compilazione. È possibile caricare tutti i progetti da cui dipende anche la compilazione, ma questo non è obbligatorio. Vedere Soluzioni filtrate.

Il filtro della soluzione non deve trovarsi nella stessa cartella della soluzione. Il percorso del file della soluzione è relativo al percorso del file di filtro della soluzione, ma i percorsi di ogni progetto sono relativi al file di soluzione stesso e devono corrispondere ai percorsi del progetto nel file della soluzione. Nell'esempio seguente viene illustrato l'uso di percorsi relativi:

{
  "solution": {
    "path": "..\\..\\Documents\\GitHub\\msbuild\\MSBuild.sln",
    "projects": [
      "src\\Build.OM.UnitTests\\Microsoft.Build.Engine.OM.UnitTests.csproj"
    ]
  }
}

Le barre rovesciate nei percorsi devono essere raddoppiate, perché sono precedute da escape.

Esempio

Ecco un esempio di soluzione filtrata in Visual Studio:

Screenshot of filtered solution in Visual Studio

In questa soluzione, ClassLibrary1 viene usato sia da ProjectA che da ProjectB e quindi ClassLibrary1 è elencato come riferimento al progetto.

Ecco il file di filtro della soluzione generato da Visual Studio:

{
  "solution": {
    "path": "MyApplication.sln",
    "projects": [
      "MyApplication\\MyApplication.csproj",
      "ProjectA\\ProjectA.csproj"
    ]
  }
}

In questo esempio, quando si compila con il filtro abilitato (usando il comando MSBuild [options] MyFilter.slnf), MSBuild compila MyApplication e ProjectA perché sono elencati in modo esplicito nel file di filtro della soluzione. Nell'ambito della compilazione di ProjectA, MSBuild compila ClassLibrary1 perché ProjectA dipende da esso. ProjectB non è compilato. Questa discussione presuppone una compilazione pulita. Se i progetti sono stati compilati in precedenza, le regole consuete si applicano per ignorare i progetti già aggiornati.

Vedi anche