Azure 自动测试生成需要测试包的客户端Sdk

Azure 自动测试生成需要测试包的客户端Sdk,azure,.net-core,nuget,azure-functions,autorest,Azure,.net Core,Nuget,Azure Functions,Autorest,我用于为Azure函数生成客户端Sdk 之后,客户端Sdk应该打包并推送到我们的nuGet提要 这些步骤都将通过Azure DevOps的yaml管道完成 这在过去的几个月里效果非常好。但最近自动测试已停止正常工作。 不幸的是,autorest生成的项目文件需要一个betanuGet包 当然,nuGet pack无法打包具有测试版或预发布依赖项的项目 有人对自动测试有相同的问题吗 我是否可以将自动测试配置为不使用测试版软件包 生成的项目文件如下所示: netstandard2.0 真的

我用于为Azure函数生成客户端Sdk

之后,客户端Sdk应该打包并推送到我们的nuGet提要

这些步骤都将通过Azure DevOps的
yaml
管道完成

这在过去的几个月里效果非常好。但最近自动测试已停止正常工作。

不幸的是,autorest生成的项目文件需要一个betanuGet包


当然,nuGet pack无法打包具有测试版或预发布依赖项的项目

  • 有人对自动测试有相同的问题吗
  • 我是否可以将自动测试配置为不使用测试版软件包
生成的项目文件如下所示:


netstandard2.0
真的
注释
8
真的
https://azuresdkartifacts.blob.core.windows.net/azure-sdk-tools/index.json
生成、打包和推送客户端Sdk的管道如下所示:

步骤:
-powershell:'npm安装-gautorest@latest'
displayName:“安装自动测试”
-任务:AzurePowerShell@4
displayName:“下载大摇大摆”
投入:
azureSubscription:${{parameters.subscription}}
脚本类型:“InlineScript”
azurePowerShellVersion:“最新版本”
内联:|
$context=New AzApiManagementContext-resourcegroup“${parameters.apimResourceGroup}}”-ServiceName“${{parameters.apim}”
导出AzApiManagementApi-Context$Context-apid“$(appName)-development”-规范格式OpenApi-SaveAs“$(Build.artifactStaginDirectory)\definition-$(version.yaml”
-powershell:'autorest--verbose--v3--csharp--add credentials--input file=“$(Build.artifactstagindirectory)\definition-$(version.yaml”--output folder=“$(Build.Repository.LocalPath)\Api\src\ClientSdk”-namespace=“ClientSdk”--override client name=“client”'
displayName:“运行自动测试”
-任务:DotNetCoreCLI@2
displayName:“打包项目”
投入:
命令:“打包”
参数:“--configuration$(buildConfiguration)--包含符号”
PackageTopack:“**/ClientSdk.csproj”
版本方案:“关闭”
详细信息包:“正常”
-任务:DotNetCoreCLI@2
投入:
命令:“推”
PackageTopUsh:'$(Pipeline.Workspace)/***.nupkg$(Pipeline.Workspace)/***.symbols.nupkg'
nuGetFeedType:“内部”
publishVstsFeed:${{parameters.nugetfeed}
nuGet pack任务因此错误而失败


1>C:\Program Files\dotnet\sdk\5.0.102\Sdks\NuGet.Build.Tasks.Pack\Build\NuGet.Build.Tasks.Pack.targets(207,5):错误NU5104:包的稳定版本不应具有预发布依赖项。修改依赖项“Microsoft.Azure.AutoRest.CSharp[3.0.0-beta.20210205.2,)”的版本规范,或更新nuspec中的版本字段。

在发布包中使用预发布包是不稳定和危险的。存在此错误是为了防止这种情况发生。您可以使用以下几个选项:

将您的软件包标记为预发布

假设您的项目仍在开发中,并且需要利用此仍在开发中的最新依赖项,只需将您的包标记为也在开发中。从:

如果您的项目使用PackageReference:包括语义版本 .csproj文件的PackageVersion元素中的后缀:

<PropertyGroup>
    <PackageVersion>1.0.1-alpha</PackageVersion>
</PropertyGroup>
<version>1.0.1-alpha</version>

1.0.1-α
如果您的项目有packages.config文件:包含语义 .nuspec文件的version元素中的版本后缀:

<PropertyGroup>
    <PackageVersion>1.0.1-alpha</PackageVersion>
</PropertyGroup>
<version>1.0.1-alpha</version>
1.0.1-alpha
使用上一个稳定版本


退回到使用发布包的依赖项的上一个版本。这通常更安全,因为在开发依赖项中可能会引入未知的严重问题。如果项目开发人员认为他们的项目对于生产使用是安全的,他们会将其标记为安全的。

是一种基于OpenApi/Swa生成Sdk的工具gger.我不想使用beta或预发布包,但autorest会生成一个需要此beta包的项目。您的问题表明它以前工作正常。因此,请使用以前未使用beta包的autorest版本。作为一般规则,最好指定所有依赖项的特定版本,而不是a默认情况下进行测试,这样就不会发生像这样的破坏性更改。添加特定的版本是有效的:
autorest--version=3.0.6336…
很高兴它能为您工作!如果您能将此问题标记为已回答,那么未来的谷歌用户将知道有一个解决方案,我们将不胜感激。