Aracılığıyla paylaş


MSBuild'deki çözüm filtreleri

Çözüm filtresi dosyaları, bir çözümdeki tüm projelerden hangi projelerin derlendiğini veya yüklendiğini gösteren .slnf uzantılı JSON dosyalarıdır. MSBuild 16.7'den başlayarak, çözümü filtreleme etkin olarak derlemek için çözüm filtre dosyasında MSBuild'i çağırabilirsiniz.

Uyarı

Çözüm filtre dosyası, yüklenen veya oluşturulan proje kümesini azaltır ve biçimi basitleştirir. Çözüm dosyası hala gereklidir.

Komut satırından çözüm filtresi oluşturma

Komut satırından bir çözüm filtresi dosyası oluşturmak, çözüm dosyası oluşturmakla tam olarak aynı söz dizimini kullanır. Filtreleme etkin olarak derlenmesi için çözüm yerine çözüm filtre dosyasını aşağıdaki gibi belirtin:

msbuild [options] solutionFilterFile.slnf

Ayrıca anahtarları ve ek özellikleri normal şekilde ekleyebilirsiniz. bkz. MSBuild komut satırı başvurusu. Bu komut, filtrelenmiş projeleri ve bağımlı oldukları tüm projeleri oluşturur. Komut satırından bir çözüm filtresi oluştururken, MSBuild bağımlılıkları otomatik olarak izler. Filtrede belirtilmişse veya oluşturulan bir proje tarafından başvurulsa bir proje oluşturur.

Çözüm filtre dosyaları

Çözüm filtresi dosyalarıyla çalışmak için Visual Studio'yu kullanabilirsiniz. Visual Studio'da bir çözüm filtresi açıldığında, yüklenen projelerin yanı sıra kaldırılan projeler de görüntülenir ve derlemek üzere seçmek üzere daha fazla proje yükleme seçeneği sunulur. İlk projenin veya projelerin de derlemeye bağımlı olduğu tüm projeleri yükleyebilirsiniz, ancak bu gerekli değildir. Bkz. Filtrelenmiş çözümler.

Çözüm filtresinin çözümle aynı klasörde olması gerekmez. Çözüm dosyasının yolu çözüm filtre dosyasının konumuna göredir, ancak her projenin yolları çözüm dosyasının kendisine göredir ve çözüm dosyasındaki proje yollarıyla eşleşmelidir. Aşağıdaki örnekte göreli yolların kullanımı gösterilmektedir:

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

Kaçışları olduğundan yollardaki ters eğik çizgilerin ikiye katlanması gerekir.

Uyarı

MSBuild 17.12 ve sonraki sürümlerde desteklenen .slnx çözüm dosyası biçimini kullanıyorsanız, .slnx dosyası .slnf dosyasından önceliklidir.

Örnek

Visual Studio'da filtrelenmiş bir çözüm örneği aşağıda verilmişti:

Visual Studio 'da filtrelenmiş çözümün ekran görüntüsü

Bu çözümde, ClassLibrary1 hem ProjectA hem de ProjectB tarafından kullanılır ve bu nedenle ClassLibrary1 proje başvurusu olarak listelenir.

Visual Studio'nun oluşturduğu çözüm filtresi dosyası aşağıdadır:

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

Bu örnekte, filtreleme etkin olarak oluşturduğunuzda (MSBuild [options] MyFilter.slnfkomutunu kullanarak), MSBuild çözüm filtre dosyasında açıkça listelendiğinden MyApplication ve ProjectA'yı derler. ProjectA oluşturmanın bir parçası olarak MSBuild, ProjectA buna bağlı olduğundan ClassLibrary1 derler. ProjectB derlenmemiş. (Bu tartışmada temiz bir derleme olduğu varsayılır. Projeler daha önce oluşturulduysa, zaten up-to-date olan projeleri atlamak için normal kurallar geçerlidir.)

Ayrıca bkz.

  • filtrelenmiş çözümleri
  • MSBuild komut satırı başvurusu