F# 使用伪代码操作XML文件
问题:如何使用FAKE在XML文件中设置特定属性 我想在FAKE的帮助下构建一个Windows Phone 8.1项目。版本标记是生成脚本的一个参数。标记已烘焙到assemply信息中:F# 使用伪代码操作XML文件,f#,windows-phone-8.1,f#-fake,F#,Windows Phone 8.1,F# Fake,问题:如何使用FAKE在XML文件中设置特定属性 我想在FAKE的帮助下构建一个Windows Phone 8.1项目。版本标记是生成脚本的一个参数。标记已烘焙到assemply信息中: let version = getBuildParamOrDefault "version" "0.0.0.1" Target "AssemblyInfo" (fun _ -> CreateCSharpAssemblyInfo "./src/SharedAssemblyInfo.cs"
let version = getBuildParamOrDefault "version" "0.0.0.1"
Target "AssemblyInfo" (fun _ ->
CreateCSharpAssemblyInfo "./src/SharedAssemblyInfo.cs"
[
Attribute.Product product
Attribute.Version version
Attribute.FileVersion version
Attribute.Metadata ("githash", commitHash)
]
)
Windows Phone 8.1项目中还有一个包含版本信息的文件:Package.appxmanifest
<?xml version="1.0" encoding="utf-8"?>
<Package ...>
<Identity Name="..." Publisher="..." Version="1.0.0.0" />
...
</Package>
我在FAKE()的文档中发现了一个XMLHelper,看起来这个东西可以完成这项工作。但没有例子。我不知道怎么做。您可以使用XMLHelper库来操作XML文件。通过使用XPath表达式引用XML文件中的元素,可以使用XmlPoke函数来更改该元素。Package.appxmanifest文件包含名称空间,因此必须使用能够正确处理名称空间的姐妹函数XmlPokeNS 最后一个困难是Package.appxmanifest中的默认名称空间。必须指定与默认命名空间关联的前缀。在XPath表达式中,此前缀用于引用XML元素 没有特殊的前缀字符串,您可以选择任何您想要的。在本例中,我选择前缀“df”:
打开Fake.XMLHelper
目标“PackageAppxmanifest”
let file=“”
设ns=[“df”http://schemas.microsoft.com/appx/2010/manifest" ]
让xpath=@“df:Package/df:Identity/@Version”
XmlPokeNS文件ns xpath版本
Target "AppxManifest" (fun _ ->
???
)
"Clean"
==> "RestorePackages"
==> "AssemblyInfo"
==> "AppxManifest"
==> "Build"
open Fake.XMLHelper
Target "PackageAppxmanifest" <| fun _ ->
let file = "<path to Package.appxmanifest>"
let ns = [ "df", "http://schemas.microsoft.com/appx/2010/manifest" ]
let xpath = @"df:Package/df:Identity/@Version"
XmlPokeNS file ns xpath version