0

我正在扩展我的项目的构建过程,以包括从各种模型(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类来实现,但我正在寻找简单的解决方案。

4

1 回答 1

1

Thrift 理解 UTF-8

直到最近,一些 UTF-8 文件之前的 BOM 还存在问题,因此如果您在没有 BOM 的情况下存储 Thrift IDL 文件,它会起作用。这个问题是已知的,并且已经在 Trunk 中解决了

这能解决你的问题吗?

于 2013-09-13T18:48:50.967 回答