NET内核中的节俭-生成的C#代码不编译
我试图在.NET核心项目中使用,但由于某种原因,Thrift编译器生成的C#代码无法工作 我创建了一个非常简单的.thrift文件用作测试,如下所示:NET内核中的节俭-生成的C#代码不编译,c#,.net-core,thrift,C#,.net Core,Thrift,我试图在.NET核心项目中使用,但由于某种原因,Thrift编译器生成的C#代码无法工作 我创建了一个非常简单的.thrift文件用作测试,如下所示: namespace netcore Management service ManagementService { void Ping() } 我已将其放入一个空类库(我的其他项目将依赖于该类库),并已将以下代码添加到我的.csproj文件中进行编译: <Target Name="PreBuild" Befor
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文件可能有问题吗?似乎是由于同时使用
联合
和哈希代码
造成的-gen netcore:wcf、union、serial、hashcode
在类型为PingArgs
时生成作为Ping_args
删除任何一个都可以摆脱该强制转换。用于生成文件的cmdline是什么?注意
-gen netcore
和-gen csharp
之间存在差异(至少现在,我们正在努力将它们合并为一个)