【问题标题】:Visual Studio Build Fails for Net Core 3.0 SDK Preview 9 on Azure DevopsAzure Devops 上 Net Core 3.0 SDK Preview 9 的 Visual Studio 构建失败
【发布时间】:2019-09-09 10:33:48
【问题描述】:

我整个周末都在为此苦苦挣扎。

我无法成功构建 Net Core 3 SDK Preview 9(2019 年 9 月 4 日发布)。

我已经建立了一个管道,专门用于:

  1. 使用新的 SDK
  2. 使用新的 SDK 实现 global.json 文件
  3. 使用 Nuget 5.x 和 Nuget restore 正确获取预览包
  4. Visual Studio 构建解决方案

我在构建阶段 (4) 遇到以下错误:

错误:无法找到 .NET Core SDK。检查它是否已安装 并且 global.json 中指定的版本(如果有)与 安装版本。

错误 MSB4236:指定的 SDK 'Microsoft.NET.Sdk.Web' 不能 找到了。

在步骤 2 中实施 global.json 之前,我最初在 Nuget 恢复阶段 (3) 遇到了同样的错误,所以我知道 global.json 被正确引用。

管道 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)'

【问题讨论】:

  • 您需要在构建管道中的构建作业之前添加一个安装作业来安装预览。我在预览版 6 中遇到了类似的问题。
  • 你能分享你的管道吗?
  • 感谢 ilkerkaran。已经这样做了,但如果没有现在添加的完整管道,您将无法看到。
  • 您使用的是什么代理和 Visual Studio? AFAIK,.NET Core 3.0 SDK 处于预发布状态,正式发布的 Visual Studio 不支持它,SDK 团队建议对使用预览版 SDK 的项目使用预览版 Visual Studio。因此,我们可能需要使用私有代理构建这个项目并预览 Visual Studios。
  • 谢谢 Leo,是的,本地一切都很好,因为这就是我正在做的。显然这个问题出在 DevOps 上,我只是在管道中的 Visual Studio Build 配置下使用“最新”的 Visual Studio 版本。

标签: c# visual-studio .net-core azure-devops azure-pipelines


【解决方案1】:

以下对我有用。

设置以下变量:

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

设置全局json

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

另外,需要注意的一点是,我在使用 Nuget 5 时遇到了问题。我使用了Nuget 4.7.1

【讨论】:

  • 你已经成功了,邓肯。很棒的工作,谢谢。为了记录,我只需要添加变量。 Nuget 5.x 和现有的 Global Json powershell Yaml 运行良好。
  • 酷。我还假设一旦发布了 MSBuild 16.3,就不需要这个变量了。
【解决方案2】:

根据 cmets 中的建议,您需要先安装 .net core preview 9,然后才能使用它。

你需要把下面的代码放在你的use语句之前:

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

希望这会有所帮助。我使用这个 yml 来构建 azure devops。 我“忘记”了 global.json - 添加它并且它有效。

更新:更多来自我的工作流水线脚本

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 和 global.json 位于我的项目文件夹的根目录中。

【讨论】:

  • 谢谢 SamuelD,恐怕同样的错误。 UseDotNet@2 任务可以很好地安装 SDK,并且 nuget restore 可以很好地使用它。这只是 VS 构建步骤失败,显然没有看到像 Nuget Restore 那样的 SDK。我的直觉是,这是一个 Preview 9 问题。预览版 8 构建良好。
  • 你得到一个失败的 VS Build 错误?您确定您使用的是 Visual Studio 2019 预览版 16.3.0 预览版 3 吗?我的更新程序失败,需要下载新版本(我以为是 3,但不是)。
  • 对不起 SamuelD,我在管道步骤中只有“最新”选项。无法使用预览。我错过了什么吗?
  • 您在 Visual Studio 中看到了什么 > 帮助 > 关于 Microsoft Visual Studio?
  • 这是 DevOps SamuelD,不是本地的。这就是混乱的地方。在本地,我可以使用 Visual Studio 进行构建,并启用 Net Core SDK 的预览。
【解决方案3】:

.Net Core 3.0 终于发布了。您只需安装 .Net Core 3.0.100 作为第一步:

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

带有测试和工件发布的完整 .yml 文件。在运行此之前更新此 'FolderName/ProjectName.csproj'

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'

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    相关资源
    最近更新 更多