如何升级 azure CI 以使用 c# 8.0

Posted

技术标签:

【中文标题】如何升级 azure CI 以使用 c# 8.0【英文标题】:How to upgrade azure CI to use c# 8.0 【发布时间】:2020-03-02 23:36:37 【问题描述】:

我有一个构建我的 asp.net core 2.2 项目的天蓝色管道。我使用 c# 8.0 升级了项目。但是,我的 azure 管道似乎不支持 c# 8.0。如何升级我的 azure 管道以使用 c# 8.0?

我查看了 azure 管道中的选项,但没有发现任何关于升级到 c# 8.0 的内容

这是生成的 YAML 文件

pool:
  name: Hosted VS2017
  demands:
  - msbuild
  - visualstudio

steps:
- task: NuGetToolInstaller@0
  displayName: 'Use NuGet 4.4.1'
  inputs:
    versionSpec: 4.4.1

- task: NuGetCommand@2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: '$(Parameters.solution)'
    vstsFeed: '3e219c03-bc0d-4106-82be-9ff3b21190a5'

- task: VSBuild@1
  displayName: 'Build solution'
  inputs:
    solution: '$(Parameters.solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactstagingdirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

- task: VSTest@2
  displayName: 'Test Assemblies'
  inputs:
    testAssemblyVer2: |
     **\$(BuildConfiguration)\*test*.dll
     !**\obj\**
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
    diagnosticsEnabled: True
  enabled: false

- task: PublishSymbols@2
  displayName: 'Publish symbols path'
  inputs:
    SearchPattern: '**\bin\**\*.pdb'
    PublishSymbols: false
  continueOnError: true

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
    ArtifactName: '$(Parameters.ArtifactName)'
  condition: succeededOrFailed()

我希望项目能够构建,但它给了我这个错误: CSC : error CS1617: Invalid option '8.0' for /langversion. Use '/langversion:?' to list supported values.

【问题讨论】:

【参考方案1】:

我发现了这个问题。基于 YAML 文件,我使用的是“Hosted 2017”代理池。在我使用“windows-2019”规范将其更改为“Azure Pipelines”后,它起作用了。

【讨论】:

可以在docs.microsoft.com/en-us/azure/devops/pipelines/agents/…查看可用代理列表 你找到这个解决方案真是太棒了,你可以Accept it as an Answer,这样其他遇到同样问题的人也可以找到这个解决方案并解决他们的问题。 在 Xamarin.ios 构建的情况下,需要“托管 macOS”(至少对于 Apple 证书,但最有可能用于构建 Xamarin.iOS 解决方案,因为这是通过 VS 要求的)。由于没有 2019 选项,如何在此处解决相同的问题? @ChrisEvans 您是否有机会发布您使用的确切文本?根据 Oliver 的链接,具有“windows 2019”规范的“Azure Pipeline”不是有效选项。 我认为是 windows-2019 @emery.noel

以上是关于如何升级 azure CI 以使用 c# 8.0的主要内容,如果未能解决你的问题,请参考以下文章

Blazor .NET 5 的 Azure CI 管道不起作用

Azure开发CI缺少代理作业

如何使用 C# 中的 Azure.Storage.Blobs 从 Azure 存储 Blob 以 ByteArray 格式获取文件

实践:基于Azure部署Jenkins服务并开发MERN应用的CI/CD构建管道

Azure C# 框架 - 如何禁用验证代码以进行身份​​验证

如何在 c# 中为 SQL Azure 启用内部 Azure 服务