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&D Sessions\**" />
</ItemGroup>
<Target Name="Default" Inputs="@(Decode)" Outputs="%(Identity).always">
<Exec Command="$(FLAC) --decode "@(Decode)"" />
</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.