Skip to content
This repository was archived by the owner on Apr 9, 2021. It is now read-only.

Commit 8d7b57e

Browse files
committed
update C# tutorial: new Grpc.Tools instructions
1 parent 737508d commit 8d7b57e

File tree

1 file changed

+17
-31
lines changed

1 file changed

+17
-31
lines changed

docs/tutorials/basic/csharp.md

+17-31
Original file line numberDiff line numberDiff line change
@@ -149,38 +149,24 @@ message Point {
149149
## Generating client and server code
150150

151151
Next we need to generate the gRPC client and server interfaces from our .proto
152-
service definition. We do this using the protocol buffer compiler `protoc` with
153-
a special gRPC C# plugin.
154-
155-
If you want to run this yourself, the `Grpc.Tools` NuGet package contains the
156-
binaries you will need to generate the code. You can fetch a copy of
157-
the `Grpc.Tools` package into your local nuget cache by clicking
158-
"Restore NuGet Packages" in Visual Studio or running `dotnet restore RouteGuide.sln`
159-
from the `examples/csharp/RouteGuide` directory. Once that's done, you can generate the C# code.
160-
161-
To generate the code, the following command should be run from the
162-
`examples/csharp/RouteGuide` directory:
163-
164-
- Windows
165-
166-
```
167-
@rem Local nuget cache on Windows is located in %UserProfile%\.nuget\packages
168-
> %UserProfile%\.nuget\packages\Grpc.Tools.{{ site.data.config.grpc_release_tag | remove_first: "v" }}\tools\windows_x86\protoc.exe -I../../protos --csharp_out RouteGuide --grpc_out RouteGuide ../../protos/route_guide.proto --plugin=protoc-gen-grpc=%UserProfile%\.nuget\packages\Grpc.Tools.{{ site.data.config.grpc_release_tag | remove_first: "v" }}\tools\windows_x86\grpc_csharp_plugin.exe
169-
```
170-
171-
- Linux (or Mac OS X by using `macosx_x64` directory).
172-
173-
```
174-
# Local nuget cache on Linux and Mac is located in ~/.nuget/packages
175-
$ ~/.nuget/packages/grpc.tools.{{ site.data.config.grpc_release_tag | remove_first: "v" }}/tools/linux_x64/protoc -I../../protos --csharp_out RouteGuide --grpc_out RouteGuide ../../protos/route_guide.proto --plugin=protoc-gen-grpc=~/.nuget/packages/grpc.tools.{{ site.data.config.grpc_release_tag | remove_first: "v" }}/tools/linux_x64/grpc_csharp_plugin
176-
```
177-
178-
Running the appropriate command for your OS regenerates the following files in
179-
the RouteGuide directory:
180-
181-
- `RouteGuide/RouteGuide.cs` contains all the protocol buffer code to populate,
152+
service definition. This can be done by invoking the protocol buffer compiler `protoc` with
153+
a special gRPC C# plugin from the command line, but starting from version
154+
1.17 the `Grpc.Tools` NuGet package integrates with MSBuild to provide [automatic C# code generation](https://github.com/grpc/grpc/blob/master/src/csharp/BUILD-INTEGRATION.md)
155+
from `.proto` files, which gives much better developer experience by running
156+
the right commands for you as part of the build.
157+
158+
This example already has a dependency on `Grpc.Tools` NuGet package and the
159+
`route_guide.proto` has already been added to the project, so the only thing
160+
needed to generate the client and server code is to build the solution.
161+
That can be done by running `dotnet build RouteGuide.sln` or building directly
162+
in Visual Studio.
163+
164+
The build regenerates the following files
165+
under the `RouteGuide/obj/Debug/TARGET_FRAMEWORK` directory:
166+
167+
- `RouteGuide.cs` contains all the protocol buffer code to populate,
182168
serialize, and retrieve our request and response message types
183-
- `RouteGuide/RouteGuideGrpc.cs` provides generated client and server classes,
169+
- `RouteGuideGrpc.cs` provides generated client and server classes,
184170
including:
185171
- an abstract class `RouteGuide.RouteGuideBase` to inherit from when defining
186172
RouteGuide service implementations

0 commit comments

Comments
 (0)