.NET Core中的节俭 - 生成的C#代码无法编译

问题描述 投票:2回答:1

我试图在.NET Core项目中使用Thrift,但由于某种原因,Thrift编译器生成的C#代码不起作用。

我创建了一个非常简单的.thrift文件用作测试,如下所示:

namespace netcore Management

service ManagementService {
    void Ping()
}

我把它放在一个空的类库(我的其他项目将依赖它)中,并将以下代码添加到我的.csproj文件中进行编译:

<Target Name="PreBuild" BeforeTargets="_GenerateRestoreProjectSpec;Restore;Compile">
    <Exec Condition="'$(OS)' == 'Windows_NT'" Command="where thrift" ConsoleToMSBuild="true">
        <Output TaskParameter="ConsoleOutput" PropertyName="PathToThrift" />
    </Exec>
    <Exec Condition="Exists('$(PathToThrift)')" Command="$(PathToThrift) -out $(ProjectDir) -gen netcore:wcf,union,serial,hashcode -r management.thrift" />
</Target>

这似乎工作正常,并在我的项目中创建一个包含自动生成的代码的ManagementService.cs文件。

但是,这个自动生成的代码无法编译!当我尝试时,MSBuild抛出这些错误:

找不到类型或命名空间名称'Ping_args'(您是否缺少using指令或程序集引用?)

找不到类型或命名空间名称'Ping_result'(您是否缺少using指令或程序集引用?)

仔细查看代码,确实看起来确实没有在任何地方声明这两个变量。谁能告诉我为什么会这样?我的.thrift文件有问题吗?

c# .net-core thrift
1个回答
1
投票

似乎是由unionhashcode引起的。当-gen netcore:wcf,union,serial,hashcode类型时,as Ping_args正在生成PingArgs

删除要么摆脱那个演员。

© www.soinside.com 2019 - 2024. All rights reserved.