任何人都可以向我发送一个示例nant.build文件,该文件从名为file.txt的文本文件中读取值。
由于 麦迪
答案 0 :(得分:12)
<?xml version="1.0" encoding="utf-8" ?>
<project xmlns="http://nant.sf.net/release/0.86-beta1/nant.xsd"
name="Company.Portal.Domain" default="GetFile">
<call target="GetFile" />
<target name="GetFile">
<echo message="Retrieving file contents"/>
<property name="file.contents" value="0" />
<loadfile file="file.txt" property="file.contents" />
<property name="file.contents" value="${string::trim(file.contents)}" />
<echo message="contents of file is ${file.contents}"/>
</target>
</project>
当然,如果您愿意,可以跳过第6,9和10行。 [编辑]
<if test="${file.contents=='someValue'}">
<echo>Some value found</echo>
</if>
获取完整详情
[EDIT2]
由于您想获取文本文件第3行的值,请执行此操作
<?xml version="1.0"?>
<project name="Read3rdLine" default="main">
<property name="myInt" value="0"/>
<property name="x" value="0"/>
<property name="LineToRead" value="3"/>
<target name="main" description="compiles the source code">
<property name="i" value="0"/>
<foreach item="Line" in="file.txt" property="x" trim="Both">
<property name="i" value="${int::parse(i) + 1}"/>
<if test="${i==LineToRead}">
<property name="myInt" value="${x}"/>
</if>
</foreach>
<echo>found ${myInt} at line ${LineToRead}</echo>
</target>
</project>
答案 1 :(得分:0)
我发现使用正则表达式更灵活,因为它不依赖于某一行位于特定位置并且更容易编码。
<loadfile file="${filename}" property="assemblyInfo" />
<regex input="${assemblyInfo}" pattern="(?'assemblyVersion'AssemblyVersion[0-9.()"]+)" />
语法有点奇怪,但第二行的结果是使用正则表达式分组模式匹配的字符串填充属性调用assemblyVersion
:(?)