我正在扩展我的项目的构建过程,以包括从各种模型(Thrift IDL和其他模型)生成新的源文件。我在 Visual Studio 2012 中使用 C#。
生成逻辑是通过BeforeBuild
在文件中扩展目标来完成的.csproj
,如下所示:
<ItemGroup>
<Thrift Include="IDL\*.thrift" />
</ItemGroup>
<Target Name="BeforeBuild">
<RemoveDir Directories="$(gendirs)"/>
<MakeDir Directories="$(gendirs)" />
<XmlPeek XmlInputPath="@(MSBuildProjectDirectory\app.config" Query="/configurations/appSettings/add[@key='ThriftCompilerPath']/@value">
<Output TaskParameter="Result" ItemName="ThriftExec"/>
</XmlPeek>
<Exec Command="$(ThriftExec) -v -out Gen\Thrift --gen csharp:hashcode %(Thrift.FullPath)" />
...
</Target>
这些.thrift
文件是项目的一部分,并且是 UTF-8 格式,这似乎是一个问题,因为 thrift 编译器(和其他)无法处理 UTF-8 格式并且只需要 ASCII。将这些文件提供给编译器会导致错误。
有没有办法让文件以 ASCII 格式保存或至少转换为 ASCII 格式,然后再使用 msbuild 将它们提供给相应的编译器?我认为这可以通过派生Task类来实现,但我正在寻找更简单的解决方案。