diff --git a/src/app/FakeLib/AssemblyInfoHelper.fs b/src/app/FakeLib/AssemblyInfoHelper.fs index 7410923404b..fbc51dd780c 100644 --- a/src/app/FakeLib/AssemblyInfoHelper.fs +++ b/src/app/FakeLib/AssemblyInfoHelper.fs @@ -207,7 +207,7 @@ type AssemblyInfoReplacementParams = AssemblyFileVersion : string AssemblyInformationalVersion : string AssemblyConfiguration : string - AssemblyMetadata : string list } + AssemblyMetadata : (string * string) list } /// AssemblyInfoReplacement default params let AssemblyInfoReplacementDefaults = @@ -224,10 +224,21 @@ let ReplaceAssemblyInfoVersions param = let replaceAttribute attributeName value line = if isNullOrEmpty value then line else regex_replace (sprintf "%s\\s*[(][^)]*[)]" attributeName) (sprintf "%s(\"%s\")" attributeName value) line - - let metadaData = - if parameters.AssemblyMetadata = [] then "" else - (String.Join("\", \"", parameters.AssemblyMetadata)) + + let rec replaceMetadataAttributes metadata line = + let replaceSingleMetadataAttribute key value line = + if isNullOrEmpty key then line + else + regex_replace + (sprintf "AssemblyMetadata\\s*\\(\\s*\"%s\"\\s*,[^)]*\\)" key) + (sprintf "AssemblyMetadata(\"%s\", \"%s\")" key value) + line + match metadata with + | (key, value) :: rest -> + line + |> replaceSingleMetadataAttribute key value + |> replaceMetadataAttributes rest + | _ -> line let replaceLine line = line @@ -235,7 +246,7 @@ let ReplaceAssemblyInfoVersions param = |> replaceAttribute "AssemblyConfiguration" parameters.AssemblyConfiguration |> replaceAttribute "AssemblyFileVersion" parameters.AssemblyFileVersion |> replaceAttribute "AssemblyInformationalVersion" parameters.AssemblyInformationalVersion - |> replaceAttribute "AssemblyMetadata" metadaData + |> replaceMetadataAttributes parameters.AssemblyMetadata ReadFile parameters.OutputFileName |> Seq.map replaceLine