2017-04-03 15 views
2

私はAssemblyInfo.csを更新するためにFAKEの "CreateCSharpAssemblyInfo"機能を使用しています。 しかし、私はここに、すなわちCreateCSharpAssemblyInfoを使用するとエラーが発生する:FAKE- F#MAKE

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

'CreateCSharpAssemblyInfo'がエラーを投げていない、MSBuildのです。失敗したら、VSでソリューションを開き、そこにビルドします。これも失敗します。問題を見つけることができるはずです。たとえば、プロジェクトが参照している別のファイルにこれらの属性が定義されている可能性があります。 –

+0

dotnet coreはFAKE – Foole

+0

@Charles Magerのものと競合するこれらのアセンブリ属性を自動的に生成しています。これはVSから失敗していません。 – JFI

答えて

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 
) 
関連する問題