You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 9, 2021. It is now read-only.
Copy file name to clipboardExpand all lines: docs/quickstart/csharp.md
+18-35
Original file line number
Diff line number
Diff line change
@@ -42,7 +42,7 @@ This document will walk you through the "Hello World" example.
42
42
The projects and source files can be found in the `examples/csharp/Helloworld` directory.
43
43
44
44
The example in this walkthrough already adds the necessary
45
-
dependencies for you (Grpc, Grpc.Tools and Google.Protobuf NuGet packages).
45
+
dependencies for you (`Grpc`, `Grpc.Tools` and `Google.Protobuf` NuGet packages).
46
46
47
47
## Build the example
48
48
@@ -57,8 +57,8 @@ From the `examples/csharp/Helloworld` directory:
57
57
> dotnet build Greeter.sln
58
58
```
59
59
60
-
*NOTE: If you want to use gRPC C# from a project that uses the old-style .csproj files (supported by Visual Studio 2013, 2015 and older versions of Mono), please refer to the
61
-
[Greeter using legacy .csproj](https://github.com/grpc/grpc/blob/{{ site.data.config.grpc_release_tag }}/examples/csharp/HelloworldLegacyCsproj/README.md) example.*
60
+
*NOTE: If you want to use gRPC C# from a project that uses the "classic" .csproj files (supported by Visual Studio 2013, 2015 and older versions of Mono), please refer to the
61
+
[Greeter using "classic" .csproj](https://github.com/grpc/grpc/blob/{{ site.data.config.grpc_release_tag }}/examples/csharp/HelloworldLegacyCsproj/README.md) example.*
62
62
63
63
## Run a gRPC application
64
64
@@ -139,44 +139,27 @@ message HelloReply {
139
139
140
140
Next we need to update the gRPC code used by our application to use the new service definition.
141
141
142
-
The `Grpc.Tools` NuGet package contains the protoc and protobuf C# plugin binaries you will need to generate the code.
142
+
The `Grpc.Tools` NuGet package contains the protoc and protobuf C# plugin binaries needed
143
+
to generate the code. Starting from version 1.17 the package also integrates with
144
+
MSBuild to provide [automatic C# code generation](https://github.com/grpc/grpc/blob/master/src/csharp/BUILD-INTEGRATION.md)
145
+
from `.proto` files.
143
146
144
-
### Obtaining the Grpc.Tools NuGet package
147
+
This example project already depends on the `Grpc.Tools.{{ site.data.config.grpc_release_tag | remove_first: "v" }}` NuGet package so just re-building the solution
148
+
is enough to regenerate the code from our modified `.proto` file.
145
149
146
-
This example project already depends on the `Grpc.Tools.{{ site.data.config.grpc_release_tag | remove_first: "v" }}` NuGet package
147
-
and the package will be downloaded to your local NuGet cache as soon as you restore the nuget packages by clicking "Restore NuGet Packages" in Visual Studio or running `dotnet restore RouteGuide.sln` from the `examples/csharp/RouteGuide` directory.
150
+
You can rebuild just like we first built the original
151
+
example by running `dotnet build Greeter.sln` or by clicking "Build" in Visual Studio.
148
152
149
-
### Commands to generate the gRPC code
150
-
Note that you may have to change the `platform_architecture` directory names (e.g. windows_x86, linux_x64) in the commands below based on your environment.
153
+
The build regenerates the following files
154
+
under the `Greeter/obj/Debug/TARGET_FRAMEWORK` directory:
151
155
152
-
From the `examples/csharp/Helloworld` directory:
153
-
154
-
**Windows**
155
-
156
-
```
157
-
@rem Local nuget cache on Windows is located in %UserProfile%\.nuget\packages
protoc-gen-grpc plugin requires fullpath of "grpc_csharp_plugin" executable instead of short form with "~" symbol. Make sure to change <HOME_FOLDER phrase in below command according to your local machine.
164
-
165
-
```
166
-
# Local nuget cache on Linux and Mac is located in ~/.nuget/packages
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,
182
168
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,
184
170
including:
185
171
- an abstract class `RouteGuide.RouteGuideBase` to inherit from when defining
0 commit comments