使用CreateCSharpAssemblyInfo会抛出错误:FAKE-F#MAKE

时间:2017-04-03 10:20:41

标签: f# f#-3.0 f#-fake

我使用FAKE的“CreateCSharpAssemblyInfo”函数来更新AssemblyInfo.cs。 但是我收到了错误,即

  2) CS0579: Properties\AssemblyInfo.cs: Duplicate 'AssemblyProductAttribute' attribute
  3) CS0579: Properties\AssemblyInfo.cs: Duplicate 'AssemblyCompanyAttribute' attribute
  4) CS0579: Properties\AssemblyInfo.cs: Duplicate 'AssemblyCopyrightAttribute' attribute
  5) CS0579: Properties\AssemblyInfo.cs: Duplicate 'AssemblyVersionAttribute' attribute
  6) CS0579: Properties\AssemblyInfo.cs: Duplicate 'AssemblyFileVersionAttribute' attribute

这是我正在使用的代码:

let assemblyInfo = [
  Attribute.Title "My Project"
  Attribute.Product "My Product"
  Attribute.Company "XYZ"
  Attribute.Copyright "Copyright XYZ"
  Attribute.Version "14.8"
  Attribute.FileVersion "13.9"
]

Target "BuildApp" (fun _ ->
  CreateCSharpAssemblyInfo  "./Source Code/Project/Properties/AssemblyInfo.cs" assemblyInfo
  !! "/Source Code/Project.sln"
      |> MSBuildReleaseExt buildDir [("SolutionDir", currentPath @@ "\BuildTools")] "Build"
      |> Log "AppBuild-Output:"
)

我没有得到这个错误的原因。

我是FAKE的新手并没有多次使用F#,所以请原谅我这应该是显而易见的。

如果有人可以提供帮助,那将非常有帮助。

1 个答案:

答案 0 :(得分:0)

您是否尝试过CreateCSharpAssemblyInfoWithConfig参数?它允许一个额外的参数:

CreateCSharpAssemblyInfoWithConfig
        assemblyInfoFile
        attributes
        (AssemblyInfoFileConfig(generateClass=false))

或者,UpdateAttribute会做类似的事情(在我的情况下,所有开发人员都在Visual Studio中工作,可以安全地假设将自动生成默认的AssemblyInfo.cs文件)。 来自doc

更新AssemblyInfo文件中的一组属性。如果找不到任何属性,则会失败。

见下面的例子:

Target "UpdateAssemblyInfo" (fun _ -> 
    let csProjectDirs =
        !! "**/**/*.csproj"
        |> Seq.map (directory >> directoryInfo)

    let attributes =
        [ 
            Attribute.Title "My Project"
            Attribute.Product "My Product"
            Attribute.Company "XYZ"
            Attribute.Copyright "Copyright XYZ"
         ]
    let applyAssemblyInfo (projDir:DirectoryInfo) = 
        let assemblyInfoFile = projDir.FullName @@ "Properties/AssemblyInfo.cs"
        clearReadOnly assemblyInfoFile
        UpdateAttributes
            assemblyInfoFile
            attributes

    csProjectDirs |> Seq.iter applyAssemblyInfo
)