代码之家  ›  专栏  ›  技术社区  ›  David.Chu.ca

在NANT中把长名字转换成短名字?

  •  0
  • David.Chu.ca  · 技术社区  · 15 年前

    <property name="App.dir" 
      value ="${directory::get-current-directory()}\Source\App"/>
    

    <exec program=".\test.exe"  workingdir=".">
      <arg line="${App.dir}\project1\resources\res1.resx /arg2"/>
    

    在这里,我需要使用<arg line=…>而不是<arg value=…>将指定的2个参数传递给text.exe。

    当我在另一个开发人员的机器上构建这个NANT项目时,我得到了一个构建失败。最后我发现开发人员机器上的${App.dir}是一条长格式的路径,路径中有一个空格。结果,text.exe的参数实际上是3个或更多。

    <property name="App.dir" value ="????"/>
    

    哪里????将“${directory::get-current-directory()}\Source\App”转换为短格式的路径名。有办法吗?

    我在Windows XP中使用NANT。在Unix/Cgywin中,有 one function

    cygpath::get-dos-path
    

    我可以在NANT构建文件中使用这个吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Ken Richards    15 年前

    使用<arg value=>,从 NANT docs :

        2
  •  0
  •   Community Mohan Dere    9 年前

    我想我找到了两种方法来解决这个问题。不用将path转换为DOS path(8.3名称),我可以在参数周围使用引号。第二种方法是 ovado 建议对单个参数值使用<arg value=…/>。这是我的测试例子。所有的测试文件都在我的 文件夹。首先,我创建了一个测试蝙蝠:

    @REM This is the content of Test.bat file.
    @echo COMMAND PARAMETERS: %*
    @echo FIRST PARAMETER: %1
    @echo SECOND PARAMETER: %2
    dir %1
    

    然后我创建了一个测试生成文件(test.build)”

    <project>
      <target name="Test" description="Test with one line" failonerror="true">
        <property name="App.dir" value ="C:\Program Files"/>
        <exec program="test.bat"  workingdir=".">
          <arg line='"${App.dir}\Microsoft*.*" ${App.dir}\test2 /test3' />
        </exec>
      </target>
      <target name="Test2" description="Test2 with values" failonerror="true">
        <property name="App.dir" value ="C:\Program Files"/>
        <exec program="test.bat"  workingdir=".">
          <arg value="${App.dir}\Microsoft*.*" />
          <arg value="${App.dir}\test2" />
          <arg value="/test3" />
        </exec>
      </target>
    </project>
    

    <arg='“…”'…/> . 注意,我的属性使用了单引号 .

    这样,我就可以通过 南特.EXE . 我得到了我所期望的结果:

    C:\Test>NANT.exe -buildfile:test.build Test
    
    Test:
       [exec] COMMAND PARAMETERS: "C:\Program Files\Microsoft*.*" C:\Program Files\test2 /test3
       [exec] FIRST PARAMETER: "C:\Program Files\Microsoft*.*"
       [exec] SECOND PARAMETER: C:\Program
       [exec] C:\Test\>dir "C:\Program Files\Microsoft*.*"
       [exec]  Volume in drive C has...
       ....
    

    我得到了与备选测试2相同的结果,

    C:\Test>NANT.exe -buildfile:test.build Test2
    ...
    
    推荐文章