Directory.Build.Props 및 종속 로봇 동작

이 파일은 무엇입니까?


Directory.Build.Props는 개발자가 동일한 리포지토리의 서로 다른 dotnet 프로젝트 간에 여러 구성 및 변수를 공유할 수 있도록 하는 파일입니다. 이를 염두에 두면 언어 버전 또는 dotnet 대상 프레임워크와 같은 동일한 규칙에 따라 프로젝트를 더 쉽게 적용할 수 있습니다. 파일Directory.Build.props은 영향을 받을 모든 하위 프로젝트에 대한 리포지토리 또는 솔루션의 루트 폴더에 있어야 합니다.
이 파일의 예를 살펴보겠습니다.

Directory.Build.props



<Project>
    <!-- Shared Settings -->
    <PropertyGroup>
        <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
        <LangVersion>latest</LangVersion>
        <Nullable>enable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
    </PropertyGroup>
    <!-- Versions -->
    <PropertyGroup>
        <AspNetCoreVersion>5.0.0</AspNetCoreVersion>
        <EntityFrameworkVersion>5.0.2</EntityFrameworkVersion>
    </PropertyGroup>
</Project>

프로젝트.csproj



<Project Sdk="Microsoft.NET.Sdk.Web">

    <!-- Specific project properties that override the properties present on Directory.Build.props -->
    <PropertyGroup>
        <TargetFramework>net5.0</TargetFramework>
        <LangVersion>latest</LangVersion>
    </PropertyGroup>

    <!-- Nuget packages using the version from Directory.Build.props -->
    <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="$(AspNetCoreVersion)" />
        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="$(AspNetCoreVersion)" />
        <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="$(AspNetCoreVersion)" />
        <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="$(AspNetCoreVersion)" />
        <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="$(AspNetCoreVersion)" />
        <PackageReference Include="Microsoft.AspNetCore.ApiAuthorization.IdentityServer" Version="$(AspNetCoreVersion)" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="$(EntityFrameworkVersion)" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="$(EntityFrameworkVersion)" />
    </ItemGroup>

    <!-- Other properties here -->

</Project>

NuGet 종속성에 대한 버전 관리 시스템으로 사용



상위 두 파일에서 볼 수 있듯이 AspNetCoreVersionDirectory.Build.props라는 변수를 생성하고 있습니다. 이를 사용하여 해당 변수를 버전 번호로 사용하는 모든 패키지가 동일한 버전을 사용하도록 할 수 있습니다. 이렇게 하면 하나의 변수만 제어하여 여러 업데이트 및 불일치 버전을 방지할 수 있습니다.
이 기사를 작성할 당시 Rider는 이 버전 관리 시스템과 잘 통합되지 않았습니다. 패키지 업그레이드를 위해 Rider 도구를 사용하는 대신 Directory.Build.props 파일을 수동으로 편집해야 합니다. dotnet 도구에서도 마찬가지입니다dotnet-outdated. Visual Studio의 경우 시스템 제한으로 인해 동작을 테스트할 수 없었습니다.

Dependabot과 통합



종속성을 버전화하는 이러한 방식의 통합은 dependsabot과 매우 잘 작동합니다. 봇은 버전 변경에 영향을 미치는 영향을 받는 패키지 목록을 제공할 것입니다. 예를 들어 위의 예에서 봇은 패키지 EntityFrameworkVersionMicrosoft.EntityFrameworkCore.Sqlite에 영향을 미치는 1.0.0에서 1.0.1로 업그레이드할 것임을 알리는 Microsoft.EntityFrameworkCore.Tools에 대한 새 풀 요청을 생성합니다.
자세한 내용은 Pull Request을, 자세한 내용은 아래 스크린샷을 참조하십시오.

참조


  • https://docs.github.com/en/code-security/dependabot
  • https://docs.microsoft.com/en-us/visualstudio/msbuild/customize-your-build?view=vs-2022
  • https://github.com/askpt/blazzing-pizza-workshop

  • 샘플




    묻다 / 타오르는 피자 작업장


    Blazor 웹어셈블리 워크샵




    공저자




    .ltag__user__id__166691 .follow-action-button {
    배경색: #0030b3 !중요;
    색상: #ffffff !중요;
    테두리 색상: #0030b3 !중요;
    }



    표트르 유스티나 팔로우



    /piotrjustyna

    좋은 웹페이지 즐겨찾기