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

Ash*_*hby 12 msbuild

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

为了说明一个剪切示例,以下工作:

<exec command="NCover.Console.exe nunit-console.exe some.dll [snip] //w c:\out" />
Run Code Online (Sandbox Code Playgroud)

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

<exec command="NCover.Console.exe nunit-console.exe some.dll [snip] //w c:\out\" />
Run Code Online (Sandbox Code Playgroud)

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

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

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

提前致谢.

Dan*_*lan 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;" />
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考我的解决方案是用静态属性完全替换命令的那一部分.我一直在寻找使用<script>任务,自定义任务或接下来的社区任务.不管怎样,谢谢Danere和Amir的建议. (2认同)