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)的位置是obj\Debug,系统缺省就有了,比较方便,放在这个地方也比较合适
2)把GrpcToolsPath的值改为$(MSBuildThisFileDirectory)..\..\grpc.tools.$(GrpcToolsVersion)\tools\,原来的路径不对,编译时会报错。
3)将 <Target Name="GenerateGrpcFiles" 后面的属性BeforeTargets的值改成PrepareForBuild
4. 修改工程文件,假设文件名为testGRPC.csproj:
1)将
<Import Project="..\packages\Grpc.Tools.MsBuild.Unofficial.1.0.51\build\Grpc.Tools.MsBuild.Unofficial.targets" Condition="Exists('..\packages\Grpc.Tools.MsBuild.Unofficial.1.0.51\build\Grpc.Tools.MsBuild.Unofficial.targets')" /> 这一行移到
<Import Project="..\packages\Grpc.Core.1.15.0\build\net45\Grpc.Core.targets" Condition="Exists('..\packages\Grpc.Core.1.15.0\build\net45\Grpc.Core.targets')" />的后面一行
2)将<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />移到最后一个<Target>的后面一行
现在,按F5,就会一步编译好。
Visual Studio自动编译gRPC工程的设置的更多相关文章
- 使用 Visual Studio 2015 编译 QT 工程
简单进行一下几步就可以了 1.下载源代码 qt-everywhere-opensource-src-5.6.0-alpha.7z .解压到 D:\ToolKits\5.6.0\src 目录下2.网站 ...
- 开发者说 | 使用Visual Studio Code编译、调试Apollo项目
转载地址:https://mp.weixin.qq.com/s?__biz=MzI1NjkxOTMyNQ==&mid=2247484266&idx=1&sn=d6bcd4842 ...
- Windows下使用Visual Studio 2010编译ffmpeg全过程
在visual studio 2010中调用ffmpeg http://blog.sina.com.cn/s/blog_4178f4bf01018wqh.html Windows下使用Visual S ...
- Cocos开发中Visual Studio下libcurl库开发环境设置
我们介绍一下win32中Visual Studio下libcurl库开发环境设置.Cocos2d-x引擎其实已经带有为Win32下访问libcurl库,Cocos2d-x 3.x中libcurl库文件 ...
- Visual Studio下SQLite数据库开发环境设置
由于我们介绍的内容都是基于微软的Visual Studio下开发的Win32平台,所以下边我们介绍Visual Studio下SQLite数据库开发环境设置.具体而言我们有两种方式可以在Visual ...
- Visual Studio 2012下Box2D开发环境设置
Cocos2d-x 3.x默认情况下采用的物理引擎是Chipmunk,如果我们要使用Box2D引擎,需要进行一些设置和调整,而且不同的开发平台下这些设置也有所不同.由于本书在此之前介绍的都是基于微软的 ...
- Visual Studio 2013 编译 64 位 Python 的 C 扩展 (使用 PyObject 包装)
对于 32 位 Python 的 C 扩展,以前用过 mingW32 编译, 但是 mingW32 不支持 64 位 Python 的 C 扩展编译,详情可见 stackoverflow,这位前辈的大 ...
- Visual Studio 2013编译Tesseract 3.04
文章目录 去年时候使用了VS2008编译了Tesseract 3.02版本,主要是参考了一份官方文档,但是对于目前的最新版本并没有给出说明. 本文主要参考了Paul Vorbach的How to bu ...
- Visual Studio 中 Tab 转换为空格的设置
Visual Studio 中 Tab 转换为空格的设置 在 Visual Studio 中写代码时,按 Tab 键,会自动进行缩进.有时希望实现按 Tab 键,出现多个空格的效果.Visual St ...
随机推荐
- 题解 洛谷 P4632 【[APIO2018] New Home 新家】
首先考虑可以用二分答案来解决询问,可以二分一个长度\(len\),若在区间\([x-len,x+len]\)内包含了所有\(k\)种的商店,那么这个\(len\)就是合法的,可以通过二分来求其最小值. ...
- Java 并发队列 BlockingQueue
BlockingQueue 开篇先介绍下 BlockingQueue 这个接口的规则,后面再看其实现. 首先,最基本的来说, BlockingQueue 是一个先进先出的队列(Queue),为什么说是 ...
- Horse Pro(带负坐标的bfs搜索)
Horse Pro bfs搜索,但图中存在负值坐标,两种方法解决. 用数组标记,将原点设为300,300 用map标记 http://oj.jxust.edu.cn/contest/Problem?i ...
- liunx安装和部署nacos配置中心
1.下载https://github.com/alibaba/nacos/releases nacos-server-1.3.1.tar.gz 源码包2.上传到liunx服务器 /usr/lo ...
- LevelDB,你好~
LevelDB,你好~ 上篇文章初识:LevelDB介绍了啥是LevelDB,LevelDB有啥特性,以及Linux环境下编译,使用及调试方法. 这篇文章的话,算是LevelDB源码学习的开端吧,主要 ...
- 朝阳大妈也能听懂的git教程 (好人不谢)
1 核心概念(非常简单) 分支 同一个树关节 长两个分叉 每一个树关节 就是一个commit commit 是纵向纬度的版本 分支(branch) 是横向纬度的版本 (发挥想象力 自己 ...
- mysql数据库参数详解
1.配置参数 MySQL有两种途径途径了解其的配置参数,一个是MySQL交互模式下的命令SHOW VARIABLES,一个使用mysqladmin variables 查询. MySQL的配置参数分 ...
- Linux中配置端口转发(反向代理)
在conf.d目录下建一个文件, 以conf为结尾(如果没有conf.d目录,就自己新建一个) server { listen 80; server_name 127.0.0.1; #这个IP是你服务 ...
- ajax模拟表单提交,后台使用npoi实现导入操作 方式二
页面代码: <form id="form1" enctype="multipart/form-data"> <div style=" ...
- 2020牛客暑期多校训练营 第二场 K Keyboard Free 积分 期望 数学
LINK:Keyboard Free 我要是会正经的做法 就有鬼了. 我的数学水平没那么高. 三个同心圆 三个动点 求围成三角形面积的期望. 不会告辞. 其实可以\(n^2\)枚举角度然后算出面积 近 ...