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版本)