从msbuild批处理目录属性中删除尾部反斜杠

时间:2011-03-16 06:55:57

标签: msbuild

我正在尝试在msbuild脚本中使用exec任务来工作,并且发现了一个非常烦人的问题。 exec命令很好,只是我正在运行的进程(Ncover.Console.exe)无法处理目录名末尾的反斜杠。

使用剪切示例说明以下内容:

<exec command="NCover.Console.exe nunit-console.exe some.dll [snip] //w c:\out" />

但这失败了(注意“c:\ out”末尾的斜线):

<exec command="NCover.Console.exe nunit-console.exe some.dll [snip] //w c:\out\" />

我不能简单地删除尾部反斜杠的原因是使用批处理读取值。所以在与上面相同的剪辑中,实际看起来像这样:

<exec command="NCover.Console.exe nunit-console.exe some.dll [snip] //w 
&quot;%(TestAssemblies.RootDir)%(TestAssemblies.Directory)&quot; />

所以我的问题是如何删除这个讨厌的尾随反斜杠?

提前致谢。

1 个答案:

答案 0 :(得分:18)

如果您使用的是MSBuild 4.0,则可以使用Amir指出的属性函数,如下所示:

<PropertyGroup>
  <TestAssembliesDirectory>%(TestAssemblies.Directory)</TestAssembliesDirectory>
</PropertyGroup>
<exec command="NCover.Console.exe nunit-console.exe some.dll [snip] //w &quot;%(TestAssemblies.RootDir)$(TestAssembliesDirectory.TrimEnd('\'))&quot;" />