cake-build / cake

:cake: Cake (C# Make) is a cross platform build automation system.
https://cakebuild.net
MIT License
3.87k stars 727 forks source link

Unable to set multiple of the same attribute CustomAttributes in AssemblyInfo creator #4071

Open squid-box opened 1 year ago

squid-box commented 1 year ago

Prerequisites

Cake runner

Cake .NET Tool

Cake version

3.0.0

Operating system

Windows

Operating system architecture

64-Bit

CI Server

No response

What are you seeing?

I'm trying to set two attributes for SupportedOSPlatform (with different values) in my AssemblyInfo generated through Cake, by adding them as CustomAttributes.

It seems only the last value added to this list is actually added to the assembly info, and from a brief look at this class I guess it comes from the custom attributes being stored in a Dictionary?

What is expected?

I expect to have all the custom attributes I specify added to my AssemblyInfo file, even if they have multiple instances of the same attribute.

Steps to Reproduce

Trivial example:

CreateAssemblyInfo(File("SomeDir/My_AssemblyInfo.cs"), new AssemblyInfoSettings
{
    Version = "1.2.3.4",
    Company = "MyCompany",
    CustomAttributes = new List<AssemblyInfoCustomAttribute>
    {
        new AssemblyInfoCustomAttribute
        {
            Name = "SupportedOSPlatform",
            NameSpace = "System.Runtime.Versioning",
            UseRawValue = false,
            Value = "windows"
        },
        new AssemblyInfoCustomAttribute
        {
            Name = "SupportedOSPlatform",
            NameSpace = "System.Runtime.Versioning",
            UseRawValue = false,
            Value = "linux"
        },
    }
});

Output log

No response

squid-box commented 1 year ago

I'm not sure if the correct approach here is to make it possible to have several instances of the same attribute in CustomAttributes, or introduce a new (collection) property specifically for the SupportedOSPlatform attribute.