【问题标题】:Which version of Google.Protobuf is good for .netframework 4.0?哪个版本的 Google.Protobuf 适合 .netframework 4.0?
【发布时间】:2018-03-30 16:24:07
【问题描述】:

当我安装从 3.0.0 到 3.5.1 的版本时,错误信息如下:

安装包:无法安装包“Google.Protobuf 3.5.1”。您正在尝试将此包安装到以“.NETFramework,Version=v4.0”为目标的项目中,但该包没有 包含与该框架兼容的任何程序集引用或内容文件。有关详细信息,请联系包作者。 在行:1 字符:1 + 安装包 Google.Protobuf -版本 3.5.1 -Project HDExamine + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], InvalidOperationException + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand

然后我参考nuget包站点,它的依赖包括NETStandard.Library (>= 1.6.1),在我成功安装NETStandard.Library 2.0.1之后,但是错误信息还是一样。

我的应用程序基于 .net framework 4.0,想知道我可以使用哪个版本的 Google.Protobuf,非常感谢您的帮助。

【问题讨论】:

    标签: protocol-buffers protobuf-csharp-port


    【解决方案1】:

    看起来官方的 Google 软件包以 .NET 4.5(和 .NET Standard)为目标 - 并且从未针对低于 .NET 4.5 的任何内容。这可能有技术原因,但可能只是为了测试、方便等。所以一种选择是简单地在本地克隆它并尝试更改目标框架:看看有什么问题。

    或者,如果您不依赖于该实现:protobuf-net 以 所有 版本为目标(嗯,不完全是 - 我最终放弃了 .NET 1.1)。 API 的工作方式有所不同,但它仍然应该有你需要的东西,包括 .proto 到 C# 代码生成(https://protogen.marcgravell.com 是最简单的方法;页面上还有命令行工具的下载,它具有更多功能)。

    【讨论】:

    • 感谢 Marc,我使用 protogen.marcgravell.com 生成 c# 代码,但是我使用 Visual Studio 2013 无法成功构建生成的代码,我认为代码使用了 c# 6 的功能(例如 => 在代码)。如何修复代码以使用 vs 2013?谢谢。
    • @JamesHao 该工具包括生成低级 c# 的能力。我现在不在 PC 上,但命令行选项是 +langver=...(在 --help 中有示例)。它也可以通过 .proto 文件中的自定义属性来指定。所以:如果你不止一次需要它:值得让工具为你做这件事。
    猜你喜欢
    • 2020-02-09
    • 1970-01-01
    • 2018-04-02
    • 2016-12-19
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2018-11-23
    • 2019-09-06
    相关资源
    最近更新 更多