【问题标题】:How to build protobuf-csharp-port on Mono under WindowsWindows下如何在Mono上构建protobuf-csharp-port
【发布时间】:2012-11-30 16:53:15
【问题描述】:

我已阅读在Linux/Unix 系统下使用Mono 构建protobuf-csharp-port 的说明。我仍然无法让它工作,最终我会打开一个线程来询问原因,但这不是这篇文章的问题。

我正在使用Windows 进行开发,并且我已经使用VS2010 成功构建了protobuf-csharp-port。事实上,我需要使用 Unity3D 内部生成的 C# 类,这需要使用 Mono。

我的机器上安装了 Mono 2.8

问题是:

可以使用MonoDevelop 在Windows 中构建protobuf-csharp-port 吗?我尝试简单地导入 VS2010 解决方案并使用 Mono 编译它,但它不起作用。

我该怎么做?

编辑

在尝试使用 MonoDevelop 简单地编译 VS 解决方案时,我遇到了几个错误。第一个在FieldMappingAttribute.cs的下面一行:

 public MappedType MappedType { get; private set; }

错误如下:

FieldMappingAttribute.cs(40,40):错误 CS0501: 'Google.ProtocolBuffers.Descriptors.FieldMappingAttribute.MappedType.get' 必须声明一个主体,因为它没有标记为 abstract 或 extern (CS0501) (ProtocolBuffers)

【问题讨论】:

  • 该错误听起来像是您使用的是 C# 2 编译器。您应该至少使用 C# 3 编译器。

标签: c# windows mono protocol-buffers


【解决方案1】:

您不需要自己构建主要的 protobuf-csharp-port 项目......或者如果您这样做,您应该很少能这样做。

不需要重建 protobuf-csharp-port 只是为了构建生成的 C# 类。只需添加对 Google.ProtocolBuffers.dll 的引用,就可以了。

也就是说,我已经有一段时间没有在 Mono 上测试它了。它不会做任何拼命棘手的事情,但您绝对应该彻底测试。

【讨论】:

  • 所以我可以从 Mono 项目中引用使用 VS2010 构建的 dll?
  • @Heisenbug:当然。这就是 .NET 程序集的可移植性 :) (事实上,在 Noda Time 中,我在运行单一构建程序集时遇到了问题,这些问题通过运行 VS 构建程序集得到了解决。)
  • 哦哇..我没有意识到这一点。所以我想我使用你的 VS2010 项目并简单地链接 dll。
  • @Heisenbug:是的,没错。尽可能使用预构建的二进制文件:)
  • 只是最后一个问题。尝试在 Unity3d 下编译时仍然出现此错误。错误 CS0400:在全局命名空间中找不到类型或命名空间名称“Google”(您是否缺少程序集引用?)。我添加了对 Google.ProtocolBuffers.dll 的引用。我是否必须添加一些其他 dll 引用?
猜你喜欢
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多