여러 프레임 워크를 사용할 때 .Net 5에 대한 Azure Devops 빌드 실패
다음 프레임 워크를 사용하여 빌드하는 프로젝트가 있습니다.
<TargetFrameworks>netstandard2.0;netstandard2.1;net5.0</TargetFrameworks>
이것은 내 로컬 컴퓨터에서 잘 컴파일되지만 Azure로 푸시하면 실패합니다.
YAML 파일에 다음이있는 경우 :
variables:
solution: '**/*.sln'
buildConfiguration: 'Release'
buildPlatform: 'Any CPU'
platform: x64
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration)'
그런 다음 얻을 :
## [오류] C : \ Program Files \ dotnet \ sdk \ 3.1.403 \ Microsoft.Common.CurrentVersion.targets (1177,5) : 오류 MSB3644 : .NETFramework, Version = v5.0에 대한 참조 어셈블리를 찾을 수 없습니다. . 이 문제를 해결하려면이 프레임 워크 버전 용 개발자 팩 (SDK / 타겟팅 팩)을 설치하거나 애플리케이션의 대상을 다시 지정하십시오. .NET Framework 개발자 팩은 다음 사이트에서 다운로드 할 수 있습니다.https://aka.ms/msbuild/developerpacks
그리고 내가 시도하면
- task: VSBuild@1
displayName: 'Build all'
inputs:
solution: '$(solution)'
platform: '$(buildPlatform)' configuration: '$(buildConfiguration)'
maximumCpuCount: true
나는 얻다:
## [오류] C : \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild \ Current \ Bin \ Microsoft.Common.CurrentVersion.targets (1177,5) : 오류 MSB3644 : .NETFramework에 대한 참조 어셈블리 , 버전 = v5.0을 찾을 수 없습니다. 이 문제를 해결하려면이 프레임 워크 버전 용 개발자 팩 (SDK / 타겟팅 팩)을 설치하거나 애플리케이션의 대상을 다시 지정하십시오. .NET Framework 개발자 팩은 다음 사이트에서 다운로드 할 수 있습니다.https://aka.ms/msbuild/developerpacks
- 개발자 팩 문서는 이전 .Net Framework만을 참조하므로 관련성이 없거나 구식이라고 생각합니다.
- .Net Core 3.1에 대해 .Net 5를 변경하면 잘 작동합니다.
<TargetFrameworks>netstandard2.0;netstandard2.1;netcoreapp3.1</TargetFrameworks>
답변
프로젝트가 성공적으로 빌드되지 않는 이유는 Microsoft 호스팅 에이전트에 .NET 5.0 SDK가 설치되어 있지 않기 때문입니다.
Use.NET Core Task를 사용하여 .NET 5.0 SDK를 다운로드 할 수 있습니다 .
- task: UseDotNet@2
inputs:
packageType: 'sdk'
Version: '{version}'
includePreviewVersions: {true/false}
이 작업은 네트워크에서 특정 버전의 .Net SDK를 다운로드하여 PATH에 추가 할 수 있습니다.
또한 프로젝트에서 여러 버전의 .NET을 사용하고 있으므로이 작업을 사용하여 다음 작업에 사용할 .NET 버전을 지정할 수 있습니다.
즉,이 작업에는 두 가지 기능이 있습니다.
- 설치되지 않은 특정 SDK 버전을 다운로드하십시오.
- 다음 작업에 사용할 SDK 버전을 지정합니다.
빌드 에이전트 머신에 문제가 있다고 생각합니다.
cloud azure devops 를 사용하는 경우 빌드 머신을 업데이트 할 때까지 기다려야합니다.
온- 프레미스 Azure devops 를 사용하는 경우 빌드 머신을 직접 업데이트 해보세요.