【发布时间】:2009-11-09 15:06:21
【问题描述】:
我有一个 nant 脚本... 1.获取光盘文件的内容 2. 将该内容分配给一个 nant 属性 3. 然后使用-v 调用sqlcmd,传入包含光盘文件内容的属性 4. 在 sql 脚本中,文件的内容应该被存储过程使用。
问题在于,当文件内容包含空格时,nant 构建会因“无效参数”问题而停止
有人知道解决这个问题的方法吗?
nant 脚本的顶部是 ...
<?xml version="1.0"?>
<!-- the main name of this project -->
<project name="Hops" default="all">
<!-- BuildHistory -->
<property name="buildHistoryContents" value="" />
<xmlpeek xpath="/" file="BuildNotes.xml" property="buildHistoryContents"></xmlpeek>
<!-- <echo message="${buildHistoryContents}" /> -->
<!-- ***************** -->
<target name="ExecSql">
<echo message="running sql script : ${SqlBuildScriptsDir}${sqlBuildFileName}" />
<exec program="${SqlCmd}" commandline="-S ${SqlServerInstanceName} -E -d HBus -i ${SqlBuildScriptsDir}${sqlBuildFileName} -v vSchemaVersion=${buildHistoryContents} " />
</target>
sql 脚本包含以下行...
exec lsp_SchemaVersionUpsert '1.4', N'$(vSchemaVersion)'
有效的光盘文件内容是...
<BuildNotes>
<Note>
<buildVer>HasNotSpace</buildVer>
</Note>
</BuildNotes>
一个不工作的光盘文件内容是...
<BuildNotes>
<Note>
<buildVer>Has Space</buildVer>
</Note>
</BuildNotes>
所有这些的用途是将 xml 构建 cmets 传递给 db 模式的表记录版本构建历史记录。
有没有人知道另一种方法或知道通过这种方法的方法?
下一部分,在 Phillip Keeley 正确解决第一部分后添加(空间问题) 我简化了原始任务以简化问题。
还有一个引用属性问题; xml 引用的属性导致 nant 构建失败并显示“无效参数”。
例如,这将导致 nant 阻塞,但删除 dt 属性将使 nant 构建成功...
<BuildNotes>
<Note>
<buildVer>1.4</buildVer>
<dateStarted>09/24/2009 11:25:42</dateStarted>
<Item dt="20091008" >SpacesAndNoQuotedAttribute</Item>
</Note>
</BuildNotes>
有什么想法...?
【问题讨论】: