在管道中发布 NET 6 应用程序失败并出现“找不到类型”异常
Posted
技术标签:
【中文标题】在管道中发布 NET 6 应用程序失败并出现“找不到类型”异常【英文标题】:Publish NET 6 app in pipeline fails with "type not found" exception 【发布时间】:2021-08-27 17:03:27 【问题描述】:我尝试发布我的 net 6 应用程序,但该部分管道在发布步骤中失败。首先,如果发布实际上调用了msbuild,为什么所有示例在发布之前都有一个构建步骤?
根据我发现的一个示例,我通过脚本调用 dotnet build 和此 PASSES。 MS 文档声明发布中的所有参数都传递给 msbuild。从下面开始,我使用完全相同的属性,但发布构建失败,出现一些“找不到类型”异常(错误 CS0246:找不到类型或命名空间名称“ValueTask”(您是否缺少 using 指令或程序集引用?))
我该如何解决这个问题?
作品
脚本:dotnet build --configuration $(buildConfiguration) --framework $(dotNetFramework) -t:restore /m:1 /nr:false displayName: '构建 .NET 6 应用程序'失败;
脚本:dotnet publish --configuration $(buildConfiguration) --framework $(dotNetFramework) -t:restore /m:1 /nr:false --output $(Build.ArtifactStagingDirectory)' displayName: '发布 .NET 6 应用程序'【问题讨论】:
【参考方案1】:根据错误信息,您可以在 dotnet publish 脚本之前添加一个还原任务,并检查它是否可以工作。
例如:
steps:
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '**/*.csproj'
- script: |
dotnet publish ConsoleApp1/ConsoleApp1.csproj --configuration $(buildConfiguration) -t:restore /m:1 /nr:false --output $(Build.ArtifactStagingDirectory)'
displayName: 'Command Line Script'
我建议你可以直接使用已有的dotnet task来替换script task。
例如:
steps:
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '**/*.csproj'
- task: DotNetCoreCLI@2
displayName: Publish
inputs:
command: publish
publishWebProjects: false
projects: '**/*.csproj'
arguments: '--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)'
如果发布实际上调用 msbuild,为什么所有示例在发布之前都有一个构建步骤?
关于这个问题,可以参考这张票:Why bother with dotnet build before dotnet publish?
【讨论】:
【参考方案2】:您的构建服务器可能使用旧版本的 dotnet sdk。在使用“.Net Core”任务开始构建之前添加“Use .Net Core”任务。
确保将“Version”设置为“6.0.x”并选中“Include Preview Versions”
steps:
- task: UseDotNet@2
displayName: 'dotnet use'
inputs:
version: 6.0.x
includePreviewVersions: true
【讨论】:
以上是关于在管道中发布 NET 6 应用程序失败并出现“找不到类型”异常的主要内容,如果未能解决你的问题,请参考以下文章
Spring Data Mongo Embedded 测试失败并出现“无法识别的管道阶段名称:'$graphLookup'”
找不到配置文件“secrets.json”并且不是可选的(.NET 6)
.NET Core 发布的应用程序失败并出现 FileNotFoundException
asp.net 构建成功但发布失败并出现 System.OutOfMemoryException 错误
Worklight 推送通知 (APNS) 失败并出现 javax.net.ssl.SSLHandshakeException