Microsoft.Bcl.Build NuGet 패키지의 기능은 무엇입니까?


82

이에 대한 문서를 찾을 수 없습니다. Microsoft.Bcl.Build Nuget 페이지 의 링크 는 많은 도움을 제공하지 않습니다.

이 패키지는 특정 Microsoft 패키지를 참조하는 프로젝트를 성공적으로 빌드 할 수 있도록 빌드 인프라 구성 요소를 제공합니다.

참조를 추가하도록 지시하는 빌드 경고를 수신하지 않는 한이 패키지를 직접 참조하지 마십시오.

상기보고에서 Microsoft.Bcl.Build.targets이 바인딩 리디렉션 및 패키지 참조를 관리하는 것처럼 파일, 그것은 보인다. 이 기능 중 일부는 Visual Studio에서 실행할 때만 사용되는 것 같습니다.

누구든지이 패키지의 기능에 대한 추가 정보를 제공 할 수 있습니까? 빌드 서버 환경에서 고통 스럽습니다. 소스 코드에서 완전히 빌드 할 때 무시할 수 있습니까 (예 : 빌드 서버 환경)?

답변:


26

를 보면 다음과 Microsoft.Bcl.Build.targets같은 많은 프로젝트 구성 대상이 있습니다.

  • EnsureBindingRedirects -바인딩 리디렉션에 대해 옵트 인 된 참조를 결정하고이를 사용하여 app.config를 업데이트합니다.
  • BclBuildValidateNugetPackageReferences -이 대상은 현재 프로젝트에 설치된 모든 Nuget 패키지에 현재 프로젝트에 설치된 종속성 (전이 종속성)도 있는지 확인합니다.

따라서이 평가를 기반으로이 기능은 NuGet 종속성을 추가 / 제거 / 업데이트 할 때 개발 환경에서만 필요하다고 결정했습니다. 문제를 일으키는 CI 환경에서는 무시할 수 있습니다.

따라서 * .csproj 파일에 종속성을 유지하고 싶지만 CI 빌드를 실행할 때는 무시합니다. 이 블록을 포함하는 빌드 환경 대상 파일 (예 : builder.targets)에 조건부 가져 오기를 추가하여이를 수행했습니다.

<!-- Skip Microsoft.Bcl.Build functionality when building only from Source. -->
<PropertyGroup>
  <BclBuildImported>Ignore</BclBuildImported>
</PropertyGroup>

이는 CI 환경에서 대상을 무시하지만 개발 환경에서 활성화하는 순 효과가 있습니다. 나는 이것을 일주일 이상 실행했으며 지금까지 아무런 문제가 없습니다 ...

나는 누군가가 이것을하는 것이 나쁜 생각이라는 것을 나타내는이 패키지에 대한 더 나은 정보를 가지고 있는지 알고 싶습니다. 지금까지 나는 그것이 좋은 생각이라고 생각합니다.

2018-02-01 수정 :

명령 줄에서 ignore 매개 변수를 전달하여 Microsoft.Bcl.Build.targets논리 를 건너 뛸 수도 있습니다 .

msbuild (targets, etc) /p:BclBuildImported=Ignore

잘 이해하지 못했습니다. So I want to keep the dependency in my *.csproj files, but ignore it. I did that by adding a conditional import on a build environment targets file (eg builder.targets)자세히 설명해 주시겠습니까?
JobaDiniz

개발 중에 / Visual Studio 내에서 사용할 수 있도록 Microsoft.Bcl.Build에 대한 프로젝트 참조를 유지해야했습니다. 논리는 종속성 업데이트 중에 실행됩니다. 하지만 빌드 서버에서 실행하는 문제로 인해 빌드 서버 빌드 중에 비활성화하고 싶었습니다.
crimbo

1
이를 확인하는 방법에 대해 더 명확히하기 위해 다음은 <Target> 및 <Import> 항목에 추가 한 항목의 예입니다. <Target> : Condition="$(BclBuildImported) != 'Ignore'"및 <Import> :Condition="$(BclBuildImported) != 'Ignore' And Exists('$(SolutionDir)\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')"
Auri Rahimzadeh

나는 또한 이것이 .nuget \ something.targets가 필요한 레거시 코드에서 남은 어리석은 일임을 발견했습니다
Auri Rahimzadeh

15

기본적으로 이전 .Net을 대상으로하는 이전 패키지가 새 .Net에서 문제없이 빌드하고 컴파일하는 방법입니다.

http://blogs.msdn.com/b/bclteam/p/bclbuild.aspx 로 이동 하면 https://devblogs.microsoft.com/dotnet/pcl-and-net-nuget-에 링크 된 두 가지 공지 사항이 표시됩니다. library-are-now-enabled-for-xamarin /https://devblogs.microsoft.com/dotnet/improved-package-restore/ 를 설명해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.