web-dev-qa-db-fra.com

Visual Studio Build échoue pour Net Core 3.0 SDK Preview 9 sur Azure Devops

J'ai eu du mal avec celui-ci tout le week-end.

Je ne peux pas obtenir une version réussie pour Net Core 3 SDK Preview 9 (publié le 4 septembre 2019).

J'ai créé un pipeline uniquement pour:

  1. Utilisez le nouveau SDK
  2. Implémentez un fichier global.json à l'aide du nouveau SDK
  3. Utilisez Nuget 5.x et Nuget restore pour obtenir correctement les packages d'aperçu
  4. Visual Studio Build la solution

Je reçois les erreurs suivantes avec l'étape de construction (4):

Erreur: impossible de localiser le SDK .NET Core. Vérifiez qu'il est installé et que la version spécifiée dans global.json (le cas échéant) correspond à la version installée.

Erreur MSB4236: le SDK "Microsoft.NET.Sdk.Web" spécifié est introuvable.

J'obtenais initialement la même erreur lors de l'étape de restauration de Nuget (3) avant d'implémenter le global.json à l'étape 2, donc je connais le global.json est correctement référencé.

Pipeline YAML:

pool:
  name: Azure Pipelines
  demands:
  - msbuild
  - visualstudio

steps:
- task: UseDotNet@2
  displayName: 'Use .Net Core sdk 3.0.100-preview9-014004'
  inputs:
    version: '3.0.100-preview9-014004'
    includePreviewVersions: true

- powershell: |
   $globaljson = '{"sdk": {"version": "3.0.100-preview9-014004"}}';
   $globaljson | out-file './test.app/global.json' -Encoding UTF8
  displayName: 'Global Json'

- task: NuGetToolInstaller@1
  displayName: 'Use NuGet 5.x'
  inputs:
    versionSpec: 5.x
    checkLatest: true

- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: '$(Parameters.solution)'

- task: VSBuild@1
  displayName: 'Build solution **\*.sln'
  inputs:
    solution: '$(Parameters.solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

enter image description here

6
David D

Ce qui suit a fonctionné pour moi.

Définissez la variable suivante:

variables:
  MSBuildSDKsPath: 'C:\\hostedtoolcache\\windows\\dotnet\\sdk\\3.0.100-preview9-014004\\sdks'

Définir le json global

  - task: PowerShell@2
    displayName: 'Global Json'
    inputs:
      targetType: 'inline'
      script: 'dotnet new globaljson --sdk-version 3.0.100-preview9-014004'

En outre, une chose à noter, j'ai rencontré des problèmes en utilisant Nuget 5. et j'ai utilisé Nuget 4.7.1.

1
Duncan Gichimu

.Net Core 3.0 est enfin disponible. Il vous suffit d'installer . Net Core 3.0.1 dans un premier temps:

- task: DotNetCoreInstaller@0
  displayName: 'Install .net core 3.0.100'
  inputs:
    version: '3.0.100'

Plein .yml fichier avec test et publication d'artefacts. Mettre à jour ce 'FolderName/ProjectName.csproj' avant d'exécuter ceci.

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

variables:
  buildConfiguration: 'Release'

steps:
- task: DotNetCoreInstaller@0
  displayName: 'Install .net core 3.0.100'
  inputs:
    version: '3.0.100'

- task: DotNetCoreCLI@2
  inputs:
    command: test
    projects: '**/*Test/*.csproj'
    arguments: '--configuration $(buildConfiguration)'

- script: dotnet build --configuration $(buildConfiguration)
  displayName: 'dotnet build $(buildConfiguration)'

- task: DotNetCoreCLI@2
  displayName: 'dotnet publish --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)'
  inputs:
    command: publish
    publishWebProjects: false
    projects: 'FolderName/ProjectName.csproj'
    arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: true

- task: PublishBuildArtifacts@1
  displayName: 'publish artifacts'
0
fatihyildizhan

Comme suggéré dans les commentaires, vous devez installer .net core preview 9 avant de pouvoir l'utiliser.

Vous devez mettre le code ci-dessous avant votre déclaration d'utilisation:

- task: DotNetCoreInstaller@0
  displayName: 'Install .net core 3.0 (preview)'
  inputs:
            version: '3.0.100-preview9-014004'

J'espère que cela t'aides. J'utilise ce yml pour construire sur les devops Azure. J'ai "oublié" le global.json - l'a ajouté et cela a fonctionné.

Mise à jour: Plus de mon script de pipeline de travail

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'
steps:
- task: DotNetCoreInstaller@0
  displayName: 'Install .net core 3.0 (preview)'
  inputs:
    version: '3.0.100-preview9-014004'

- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

Azure-pipelines.yml et global.json se trouvent à la racine de mon dossier de projet.

0
SamuelD