Megoldásszűrők az MSBuildben

A megoldásszűrő fájlok olyan JSON-fájlok .slnf kiterjesztéssel, amelyek jelzik, hogy mely projekteket kell létrehozni vagy betölteni a megoldás összes projektjéből. Az MSBuild 16.7-től kezdve meghívhatja az MSBuild parancsot a megoldásszűrő fájlban, hogy a megoldást a szűrés engedélyezve legyen.

Megjegyzés

A megoldásszűrő fájl csökkenti a betöltött vagy létrehozott projektek készletét, és leegyszerűsíti a formátumot. A megoldásfájlra továbbra is szükség van.

Megoldásszűrő létrehozása a parancssorból

A megoldásszűrő fájl parancssorból való létrehozása pontosan ugyanazt a szintaxist használja, mint egy megoldásfájl létrehozása. A következő módon adja meg a megoldásszűrő fájlt ahelyett, hogy engedélyezve van a szűréssel létrehozni kívánt megoldás:

msbuild [options] solutionFilterFile.slnf

A kapcsolókat és a további tulajdonságokat a szokásos módon is hozzáfűzheti. Lásd: MSBuild parancssori referencia. Ez a parancs létrehozza a szűrt projekteket és az általuk függő projekteket. Ha a parancssorból hoz létre megoldásszűrőt, az MSBuild automatikusan követi a függőségeket. Egy projektet akkor hoz létre, ha a szűrőben van megadva, vagy egy létrehozott projekt hivatkozik rá.

Megoldásszűrő fájlok

A Visual Studióval megoldásszűrő fájlokkal dolgozhat. A Megoldásszűrő megnyitása a Visual Studióban megjeleníti a kiürített projekteket és a betöltött projekteket, és lehetővé teszi további projektek betöltését, hogy kiválaszthassa őket az építkezéshez. Betöltheti az összes projektet, amelytől a kezdeti projekt vagy projektek függenek a buildeléshez, de nem szükséges. Lásd szűrt megoldások.

A megoldásszűrőnek nem kell ugyanabban a mappában lennie, mint a megoldásnak. A megoldásfájl elérési útja a megoldásszűrő fájl helyéhez képest van, de az egyes projektek elérési útjai a megoldásfájlhoz viszonyítva jelennek meg, és meg kell egyeznie a megoldásfájl projektútvonalaival. Az alábbi példa a relatív útvonalak használatát mutatja be:

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

Az útvonalakban lévő fordított perjeleket meg kell duplázni, mivel megmenekültek.

Megjegyzés

Abban az esetben, ha az MSBuild 17.12-ben és újabb verzióiban támogatott .slnx megoldásfájlformátumot használja, a .slnx fájl elsőbbséget élvez a .slnf fájllal szemben.

Példa

Íme egy példa egy szűrt megoldásra a Visual Studióban:

Szűrt megoldás képernyőképe a Visual Studio

Ebben a megoldásban a ClassLibrary1-et a ProjectA és a ProjectB is használja, így a ClassLibrary1 projekthivatkozásként szerepel a listán.

A Visual Studio által létrehozott megoldásszűrő fájl:

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

Ebben a példában, ha engedélyezve van a szűrés (a MSBuild [options] MyFilter.slnfparancs használatával), az MSBuild a MyApplication és a ProjectA buildet hozza létre, mert azok explicit módon szerepelnek a megoldásszűrő fájlban. A ProjectA készítésének részeként az MSBuild a ClassLibrary1-et építi, mert a ProjectA attól függ. A ProjectB nincs felépítve. (Ez a vitafórum egy tiszta buildet feltételez. Ha a projektek korábban készültek, a szokásos szabályok vonatkoznak a már up-to-date projektek kihagyására.)

Lásd még