如何修复 gRPC 和 C# 的“名称空间名称类型“故障”在名称空间中不存在”?

Ema*_*röm 1 c# protocol-buffers visual-studio grpc

我定义了很多类型和方法(原始行话中的消息和服务)并陷入了这个问题。有时,当我进行更改时,我会收到此非常无用的错误消息。

The type of namespace name "Fault" does not exist in the namespace 'MyApp.MyDomain' (are you missing an assembly reference?) 
Run Code Online (Sandbox Code Playgroud)

我正在使用 Visual Studio 2017 并编译为 C#。

Ema*_*röm 5

我回答我自己的问题是因为我感觉这是一个常见问题。这也很难弄清楚,因为错误消息(尽管有帮助)非常笼统。即,由于各种原因,您总是收到相同的错误消息。

解决方案是为每个 .proto 文件设置“构建操作”属性,以使用 protobuf 编译器进行构建。

做这个:

  1. 在 Visual Studio 解决方案资源管理器中右键单击 .proto 文件。
  2. 选择“属性”
  3. 将“构建操作”更改为“Protobuf 编译器”

./project/MyProject/obj/Debug/netstandard2.0/您的 .cs 文件现在应该在您的文件夹(或类似的目标文件夹)中生成。