我使用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#,所以请原谅我这应该是显而易见的。
如果有人可以提供帮助,那将非常有帮助。
答案 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
)