注册
|
登录
发帖
热搜
活动
交友
discuz
论坛
BBS
翼度工具
翼度网址导航
开发工具
Linux命令速查
网页设计配色表
在线制作icon
颜色代码选取器
翼度科技
»
论坛
›
编程开发
›
.net
›
查看内容
返回列表
发新帖
WPF 项目使用 Grpc.Tools
奋钧
奋钧
当前离线
积分
12
4
主题
4
帖子
12
积分
新手上路
新手上路, 积分 12, 距离下一级还需 38 积分
新手上路, 积分 12, 距离下一级还需 38 积分
积分
12
发消息
显示全部楼层
1 WPF 项目使用 Grpc.Tools
1.1 方法一
把 proto 文件和 Grpc.Tools 单独建一个类库项目,WPF 项目引用这个类库项目。
解决 Grpc.Tools 自动生成的 CSharp 类无法被 WPF 项目识别引用的问题,使 WPF 项目能够成功通过编译。
参考链接:
https://docs.microsoft.com/en-us/aspnet/core/grpc/troubleshoot?view=aspnetcore-6.0#wpf-projects-unable-to-generate-grpc-c-assets-from-proto-files
1.2 方法二
csproj 属性中添加:$(CoreCompileDependsOn);Protobuf_Compile
<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
<PlatformTarget>x86</PlatformTarget>
<CoreCompileDependsOn>$(CoreCompileDependsOn);Protobuf_Compile</CoreCompileDependsOn>
</PropertyGroup>
复制代码
网友情况分析如下:
默认行为:
WPF 会创建一个临时项目,临时项目不执行 BeforeCompile 事件
Grpc.Tools 挂到了 BeforeCompile 事件上去生成代码
解决办法:
将 Grpc.Tools 挂到 WPF 临时项目程序集 CompileTemporaryAssembly 会执行的 CoreCompile 上,CoreCompile 依赖中添加 Protobuf_Compile 则编译时会执行 Protobuf_Compile 的事件 protoc 命令行来生成 CSharp 代码
参考链接:
https://github.com/dotnet/wpf/issues/810#issuecomment-587982956
2 使用公共项目定义 proto 的公共消息
好处:
为保障 Google.Protobuf Nuget依赖包版本一致性,并只生成一次公共 proto 类文件,避免重复定义的冲突,采用 Common 项目引用方式引用 Google.Protobuf 和 import 的公共 proto
使用公共项目管理 proto 定义和自动生成的锲约类,可以在不同项目之间有效传播接口协议
便于其他项目在有特异的消息类型、锲约、rpc 接口定义时,能够新的 proto 文件中直接引用 common 的 proto 文件
应用此种架构官方示例 Liber
参考链接:
https://github.com/grpc/grpc-dotnet/tree/master/examples#liber
来源:
https://www.cnblogs.com/txrock/archive/2023/06/15/17482317.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
上一篇:
盘点C#最有价值的10个语法糖
下一篇:
WPF 入门笔记 - 04 - 数据绑定
发表于 2023-6-15 12:26:23
举报
回复
使用道具
分享
返回列表
发新帖
本版积分规则
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
快速回复
快速回复
返回顶部
返回顶部
返回列表
返回列表