CS0579:重复 'global::System.Runtime.Versioning.TargetFrameworkAttribute'

CS0579: Duplicate 'global::System.Runtime.Versioning.TargetFrameworkAttribute'

我正在尝试在 DevOps 中构建多个 c# netstandard2.0 dll 和一个 netcoreapp3.1 应用程序

AssemblyInfo.cs for the .exe 包含以下内容

我可以在我的电脑上构建。

但是 DevOps 中的构建失败并出现错误

 (CoreCompile target) -> 
         obj\Release\netcoreapp3.1\.NETCoreApp,Version=v3.1.AssemblyAttributes.cs(4,12): error CS0579: Duplicate 'global::System.Runtime.Versioning.TargetFrameworkAttribute' attribute

DevOps 中的任务是

- task: DotNetCoreCLI@2
  inputs:
    command: pack
    packagesToPack: '**/SBD.*.csproj'
    versioningScheme: byPrereleaseNumber
    majorVersion: '$(Major)'
    minorVersion: '$(Minor)'
    patchVersion: '$(Patch)'

错误来自自动生成的文件 .NETCoreApp,Version=v3.1.AssemblyAttributes.cs,我认为它与您自定义的 AssemblyInfo.cs 文件有关。

对于 .net core(new SDK fprmat) 项目,默认情况下它不包含 AssemblyInfo.cs 文件,如 .net framework(旧的遗留格式)。相反,我们可以在它的项目文件中设置这些值,它会为我们生成 xx.AssemblyAttributes.csProjectName.AssemblyInfo.cs。我假设您的自定义 AssemblyInfo.cs 和自动生成的文件之间存在冲突。

因此您需要设置 <GenerateAssemblyInfo>false</GenerateAssemblyInfo> 以使用您的自定义 AssemblyInfo.cs 文件。检查Github/Dotnet-SDK中的similar ticket

这对我有用;

我在其中一个 .cproj 文件中评论(删除)<TargetFramework> 属性。