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

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

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

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

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

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



답변

를 보면 다음과 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


답변

기본적으로 이전 .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/ 를 설명해야합니다.


답변