솔루션 필터 파일은 솔루션의 모든 프로젝트에서 빌드하거나 로드할 프로젝트를 나타내는 확장 .slnf 있는 JSON 파일입니다. MSBuild 16.7부터 솔루션 필터 파일에서 MSBuild를 호출하여 필터링을 사용하도록 설정된 솔루션을 빌드할 수 있습니다.
비고
솔루션 필터 파일은 로드되거나 빌드된 프로젝트 집합을 줄이고 형식을 간소화합니다. 솔루션 파일은 여전히 필요합니다.
명령줄에서 솔루션 필터 빌드
명령줄에서 솔루션 필터 파일을 빌드하면 솔루션 파일 빌드와 정확히 동일한 구문이 사용됩니다. 다음과 같이 필터링을 사용하도록 설정하여 빌드할 솔루션 대신 솔루션 필터 파일을 지정합니다.
msbuild [options] solutionFilterFile.slnf
스위치와 추가 속성을 정상적으로 추가할 수도 있습니다. MSBuild 명령줄 참조를에서 참조하세요. 이 명령은 필터링된 프로젝트와 해당 프로젝트가 의존하는 모든 프로젝트를 빌드합니다. 명령줄에서 솔루션 필터를 빌드할 때 MSBuild는 자동으로 종속성을 따릅니다. 필터에 지정되거나 빌드된 프로젝트에서 참조하는 경우 프로젝트를 빌드합니다.
솔루션 필터 파일
Visual Studio를 사용하여 솔루션 필터 파일을 사용할 수 있습니다. Visual Studio에서 솔루션 필터를 열면 로드된 프로젝트뿐만 아니라 언로드된 프로젝트도 표시되고 빌드를 위해 더 많은 프로젝트를 로드하여 선택할 수 있는 옵션이 제공됩니다. 초기 프로젝트 또는 프로젝트가 빌드에 의존하는 모든 프로젝트를 로드할 수 있지만 필수는 아닙니다. 필터링된 솔루션 참조하세요.
솔루션 필터가 솔루션과 동일한 폴더에 있을 필요는 없습니다. 솔루션 파일의 경로는 솔루션 필터 파일의 위치를 기준으로 하지만 각 프로젝트의 경로는 솔루션 파일 자체를 기준으로 하며 솔루션 파일의 프로젝트 경로와 일치해야 합니다. 다음 예제에서는 상대 경로의 사용을 보여 줍니다.
{
"solution": {
"path": "..\\..\\Documents\\GitHub\\msbuild\\MSBuild.sln",
"projects": [
"src\\Build.OM.UnitTests\\Microsoft.Build.Engine.OM.UnitTests.csproj"
]
}
}
경로의 백슬라이스는 이스케이프되므로 두 배가 되어야 합니다.
비고
MSBuild 17.12 이상에서 지원되는 .slnx 솔루션 파일 형식을 사용하는 경우 .slnx 파일이 .slnf 파일보다 우선합니다.
예시
Visual Studio에서 필터링된 솔루션의 예는 다음과 같습니다.
Visual Studio스크린샷
이 솔루션에서 ClassLibrary1은 ProjectA와 ProjectB 모두에서 사용되므로 ClassLibrary1은 프로젝트 참조로 나열됩니다.
Visual Studio에서 생성하는 솔루션 필터 파일은 다음과 같습니다.
{
"solution": {
"path": "MyApplication.sln",
"projects": [
"MyApplication\\MyApplication.csproj",
"ProjectA\\ProjectA.csproj"
]
}
}
이 예제에서는 명령 MSBuild [options] MyFilter.slnf사용하여 필터링을 사용하도록 설정하여 빌드하는 경우 MSBuild는 솔루션 필터 파일에 명시적으로 나열되므로 MyApplication 및 ProjectA를 빌드합니다. ProjectA 빌드의 일환으로 MSBuild는 ProjectA에 따라 달라지므로 ClassLibrary1을 빌드합니다. ProjectB가 빌드되지 않았습니다. (이 설명에서는 클린 빌드를 가정합니다. 이전에 프로젝트를 빌드한 경우 이미 up-to-date인 프로젝트를 건너뛰는 데 일반적인 규칙이 적용됩니다.