Visual Studio自动编译gRPC工程的设置

Posted badnumber

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Visual Studio自动编译gRPC工程的设置相关的知识,希望对你有一定的参考价值。

前段时间研究一个java程序,增加一些功能。其中用到java和C#的通信。自然,有多种办法,后来实际上是用javascript调用C#的REST WCF服务实现的。但是在查资料的过程中,发现有个Protocol Buffers的东东,Google开发的,也可以用。出于好奇,试了下。Java那头用Maven编译,C#这头,可用MSBuild编译,但需要做些配置。

假设工程中有这些文件:test.proto,testClient.cs(调用gRPC客户端),希望按一下F5就编译好,怎么做呢?

1. 下载和安装NuGet包:Grpc, Grpc.Tools, Grpc.Tools.MSBuild.Unofficial, Google.Protobuf (注意,还有个Google.ProtocolBuffers的包,不要混起来)

2. 修改Grpc.Tools.MsBuild.Unofficial.props文件,把GrpcToolsVersion的值改成实际使用的值(目前最新版是1.15.0)

3. 修改Grpc.Tools.MsBuild.Unofficial.targets文件

1)把_GrpcOutputFolder的值改为$(IntermediateOutputPath)  当然,改成其他值也行,但是若目录不存在需要增加一个建目录的过程,比较麻烦。$(IntermediateOutputPath)的位置是objDebug,系统缺省就有了,比较方便,放在这个地方也比较合适

2)把GrpcToolsPath的值改为$(MSBuildThisFileDirectory)....grpc.tools.$(GrpcToolsVersion) ools,原来的路径不对,编译时会报错。

3)将 <Target Name="GenerateGrpcFiles" 后面的属性BeforeTargets的值改成PrepareForBuild

4. 修改工程文件,假设文件名为testGRPC.csproj:

1)将

<Import Project="..packagesGrpc.Tools.MsBuild.Unofficial.1.0.51uildGrpc.Tools.MsBuild.Unofficial.targets"  Condition="Exists(‘..packagesGrpc.Tools.MsBuild.Unofficial.1.0.51uildGrpc.Tools.MsBuild.Unofficial.targets‘)" /> 这一行移到

<Import Project="..packagesGrpc.Core.1.15.0uild et45Grpc.Core.targets" Condition="Exists(‘..packagesGrpc.Core.1.15.0uild et45Grpc.Core.targets‘)" />的后面一行

2)将<Import Project="$(MSBuildToolsPath)Microsoft.CSharp.targets" />移到最后一个<Target>的后面一行

现在,按F5,就会一步编译好。

 

以上是关于Visual Studio自动编译gRPC工程的设置的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 编译器的堆空间不足问题的解决(cmake版本)

visual studio 2010 工程太大

Visual Studio2010编译C语言,怎么设置

用CMake设置Visual Studio工程中第三方库

尝试使用 Visual Studio 2017 创建 gRPC 项目但遇到 E0145

使用 Visual Studio 2017 为 Windows 设置 GRPC CPP