diff --git a/Packer-Doc.md b/Packer-Doc.md index 3554b07cc641..d43144421d0f 100644 --- a/Packer-Doc.md +++ b/Packer-Doc.md @@ -200,7 +200,6 @@ - 在 `parameter` 中,有时会出现多于一组参数;这种情况下,每组参数都会自由组合。 - 同样的,`templates` 也会和每一套参数自由组合。 - 将所有组合后的条目汇总,生成语言文件。 - - 在这一过程中,如果出现了**键冲突**,目前而言,**打包器会在此崩溃!** 不过,如果后续观察表明确实存在此种需要,也会考虑修改这一行为。 组合文件可以和其他打包策略混合使用,以修改组合中效果不好的部分,或者添加非组合的内容。 diff --git a/src/Packer/Models/Providers/CompositionHelper.cs b/src/Packer/Models/Providers/CompositionHelper.cs index 4bb2febac28d..ebcd6ebf7213 100644 --- a/src/Packer/Models/Providers/CompositionHelper.cs +++ b/src/Packer/Models/Providers/CompositionHelper.cs @@ -57,7 +57,8 @@ from template in templates let formattedKey = string.Format(template.Key, parameter.Key.ToArray()) let formattedValue = string.Format(template.Value, parameter.Value.ToArray()) select (formattedKey, formattedValue); - return query.ToDictionary(_ => _.formattedKey, _ => _.formattedValue); + var distinct = query.DistinctBy(_ => _.formattedKey); + return distinct.ToDictionary(_ => _.formattedKey, _ => _.formattedValue); } internal static IEnumerable, IEnumerable>>