使用 MSBuild 移动和重命名具有双扩展名的文件

Ale*_*xan 8 msbuild file file-rename visual-studio-2017 movefile

在 VS MSBuild 中,我们将一组文件从一个文件夹移动到另一个文件夹:

<ItemGroup>
      <RenameFile Include="Main\App.*" />     
</ItemGroup>    
<Move SourceFiles="@(RenameFile)" DestinationFiles="%(RootDir)%(RenameFile.Directory)NewApp%(RenameFile.Extension)" />
Run Code Online (Sandbox Code Playgroud)

它工作正常,但一个文件:App.exe.config,因为它具有双扩展名,并将其更名为NewApp.config代替NewApp.exe.config(应该如何)。

如何解决?

Ale*_*xan 8

从 MSBuild 4.0 开始,我们可以使用String Item Functions,例如 Replace:

<ItemGroup>
  <RenameFile Include="Main\App.*" />    
</ItemGroup>    
<Message Text="Move: @(RenameFile) -> @(RenameFile -> Replace('App', 'NewApp'))" Importance="High" />
<Move SourceFiles="@(RenameFile)" DestinationFiles="@(RenameFile -> Replace('App', 'NewApp'))" />
Run Code Online (Sandbox Code Playgroud)

这工作正常。