MSBuild Exec任务因Unicode文件名而失败?

MSBuild Exec任务因Unicode文件名而失败?,msbuild,Msbuild,我正在使用MSBuild、FLAC和LAME来管理我的MP3收藏,但当它遇到文件名中包含非ASCII字符的文件时,它会失败 以下项目文件显示了该问题: <?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Default">

我正在使用
MSBuild
FLAC
LAME
来管理我的MP3收藏,但当它遇到文件名中包含非ASCII字符的文件时,它会失败

以下项目文件显示了该问题:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
         ToolsVersion="4.0" DefaultTargets="Default">

  <PropertyGroup>
    <FLAC>"C:\Program Files (x86)\Flac\bin\flac.exe"</FLAC>
  </PropertyGroup>

  <ItemGroup>
    <Decode
      Include="D:\Music\Artists\Kruder Dorfmeister\The K&amp;D Sessions\**" />
  </ItemGroup>

  <Target Name="Default" Inputs="@(Decode)" Outputs="%(Identity).always">
    <Exec Command="$(FLAC) --decode &quot;@(Decode)&quot;" />
  </Target>
</Project>
正如你所看到的,有东西在咀嚼“,并将其转换为“T


但是什么呢?如何解决这个问题?

内置的MSBuild
Exec
任务将给定的命令写入批处理文件,然后使用
cmd/c/q
运行它。不幸的是,它使用OEM代码页写入批处理文件

这意味着Unicode文件名被损坏

您必须编写自己的
Exec
(或
Pipe
,甚至
ConvertMusic
)任务

Default:
  "C:\Program Files (x86)\Flac\bin\flac.exe" --decode "D:\Music\Artists\Kruder Dorfmeister\The K&D Sessions\Part One\02
   - Jazz Master (K&D SessionT).flac"

  02 - Jazz Master (K&D SessionT).flac: ERROR initializing decoder
  init status = FLAC__STREAM_DECODER_INIT_STATUS_ERROR_OPENING_FILE

  An error occurred opening the input file; it is likely that it does not exist
  or is not readable.